diff --git a/USER_GUIDE.md b/USER_GUIDE.md index 225d5102..e2fd673b 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -247,7 +247,9 @@ The Settings screen allows you to configure the device's behavior. There are a f - "Ignore" (default) - Require a long press to turn off the device - "Sleep" - A short press puts the device into sleep mode - "Page Turn" - A short press in reading mode turns to the next page; a long press turns the device off + - "Footnotes" - A short press in reading mode opens the footnotes submenu; if only one footnote is present on the page, the referenced page is opened directly. The short press on the power button can be used to select the footnote in the submenu, and to go back to the original page after finish reading the footnote (like the back button). - "Refresh" - A short press triggers a manual full-screen refresh, useful for clearing ghosting +- **Quick-return from footnotes**: Toggles on and off the quick return functionality from the footnotes. When the functionality it's active, a short press of the power button will act as the back button from the footnotes page. #### 3.6.4 System diff --git a/lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Bold.ttf b/lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Bold.ttf new file mode 100644 index 00000000..2fcab561 Binary files /dev/null and b/lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Bold.ttf differ diff --git a/lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Regular.ttf b/lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Regular.ttf new file mode 100644 index 00000000..1a5e4a25 Binary files /dev/null and b/lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Regular.ttf differ diff --git a/lib/EpdFont/builtinFonts/ubuntu_10_bold.h b/lib/EpdFont/builtinFonts/ubuntu_10_bold.h index 937c50b7..27672f9a 100644 --- a/lib/EpdFont/builtinFonts/ubuntu_10_bold.h +++ b/lib/EpdFont/builtinFonts/ubuntu_10_bold.h @@ -3,12 +3,12 @@ * name: ubuntu_10_bold * size: 10 * mode: 1-bit - * Command used: fontconvert.py ubuntu_10_bold 10 ../builtinFonts/source/Ubuntu/Ubuntu-Bold.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Bold.ttf --additional-intervals 0x05D0,0x05EA + * Command used: fontconvert.py ubuntu_10_bold 10 ../builtinFonts/source/Ubuntu/Ubuntu-Bold.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Bold.ttf ../builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Bold.ttf --additional-intervals 0x05D0,0x05EA */ #pragma once #include "EpdFontData.h" -static const uint8_t ubuntu_10_boldBitmaps[17813] = { +static const uint8_t ubuntu_10_boldBitmaps[20781] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0xEF, 0xEF, 0xE7, 0xE7, 0x1E, 0xF0, 0xF7, 0x87, 0x3C, 0x39, 0xCF, 0xFF, 0xFF, 0xFC, 0xF7, 0x87, 0x3C, 0x39, 0xC7, 0xFF, 0xFF, 0xFE, 0xF7, 0x87, 0xBC, 0x39, 0xE1, 0xCE, 0x00, 0x0F, 0x01, 0xE0, 0x7F, 0x9F, 0xF7, 0xFC, 0xF3, 0x9E, @@ -1058,71 +1058,256 @@ static const uint8_t ubuntu_10_boldBitmaps[17813] = { 0xC0, 0xF7, 0x9F, 0xEF, 0x3F, 0xDE, 0x7F, 0xBC, 0xFF, 0x79, 0xFF, 0xE3, 0xFF, 0xC7, 0x7E, 0x1E, 0xF0, 0x3C, 0xF0, 0xF9, 0xFF, 0xE1, 0xFF, 0x81, 0xFE, 0x00, 0x7F, 0xF1, 0xFF, 0xE7, 0xFF, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1C, 0x3C, 0xF0, 0xF7, 0xC3, 0xDF, 0x0F, 0xF8, - 0x3C, 0x06, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x00, 0x0F, 0x83, 0xFE, 0x1E, 0x7C, - 0x78, 0xF3, 0xC3, 0xFF, 0x07, 0xF8, 0x1F, 0xE0, 0x3F, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x1E, - 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x18, 0x03, 0xC0, 0x3E, 0x00, 0xE0, 0x06, 0x00, 0x00, 0xF0, - 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x0F, 0x01, - 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0xE3, 0x1E, 0x78, 0xC3, 0x0C, - 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x10, 0x6F, 0xF6, 0xD3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, - 0x0C, 0x30, 0x21, 0x8F, 0xDB, 0x2C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0xFD, 0xFB, - 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3B, 0xDE, 0xE7, 0x38, 0x7B, 0xDC, 0xEF, 0x70, 0x7B, 0xDC, - 0xEF, 0x70, 0x3B, 0x9E, 0xE7, 0x79, 0xDE, 0x77, 0x9D, 0xE0, 0x7F, 0xBF, 0xDD, 0xEE, 0xFF, 0x77, - 0x38, 0x7F, 0xBF, 0xDD, 0xEE, 0xFF, 0x77, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0xFF, 0xFF, 0xFF, - 0xFC, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0E, - 0x03, 0x80, 0xE0, 0x38, 0xFF, 0xFF, 0xFF, 0xFC, 0x38, 0x0E, 0x03, 0x8F, 0xFF, 0xFF, 0xFF, 0xC3, - 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x3C, 0xFD, 0xFB, 0xF7, 0xE7, 0x80, 0xF0, 0xE1, 0xFE, 0x3E, - 0x3F, 0xC7, 0xC7, 0xF8, 0x70, 0xF0, 0x3E, 0x0E, 0x00, 0x0F, 0xE3, 0xC0, 0x01, 0xDC, 0xF0, 0x00, - 0x7B, 0xDE, 0x00, 0x0F, 0x7F, 0x80, 0x00, 0xEE, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xF7, 0x7C, - 0x3E, 0x01, 0xFF, 0xCF, 0xE0, 0x3B, 0xBF, 0xDC, 0x0F, 0x73, 0xF3, 0x81, 0xCE, 0x7E, 0x70, 0x79, - 0xDF, 0xEE, 0x1E, 0x3F, 0x9F, 0xC3, 0xC3, 0xE1, 0xF0, 0x00, 0x38, 0xF3, 0xE7, 0x9F, 0x1E, 0x3E, - 0x3C, 0x38, 0x00, 0x00, 0xE1, 0xE3, 0xC3, 0xC7, 0xCF, 0x3C, 0x78, 0xE0, 0x00, 0x00, 0xE0, 0x3C, + 0x3C, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x07, 0xBC, 0x0E, 0x78, + 0x3C, 0x78, 0x7F, 0xF1, 0xFF, 0xF3, 0xFF, 0xE7, 0x83, 0xDE, 0x07, 0xFC, 0x07, 0x80, 0x00, 0x03, + 0x80, 0x07, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x0E, 0x0F, 0xF0, 0xFF, 0x1F, 0xE0, 0x1C, 0x7F, 0xDF, + 0xFB, 0xFF, 0xF1, 0xFF, 0xFD, 0xFF, 0x9F, 0xE0, 0xF0, 0x1C, 0x03, 0xC0, 0x78, 0x06, 0x00, 0x07, + 0x80, 0x0F, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x7B, 0xC0, 0xF7, 0x81, 0xCF, 0x07, 0x8F, 0x0F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0xF0, + 0x7B, 0xC0, 0xFF, 0x80, 0xF0, 0x0E, 0x03, 0xE0, 0x7C, 0x03, 0x80, 0xE0, 0x1C, 0x1F, 0xE1, 0xFE, + 0x3F, 0xC0, 0x38, 0xFF, 0xBF, 0xF7, 0xFF, 0xE3, 0xFF, 0xFB, 0xFF, 0x3F, 0xC1, 0xE0, 0x00, 0x08, + 0x00, 0x38, 0x00, 0xF0, 0x0B, 0xC0, 0x3F, 0x01, 0xFC, 0x03, 0xB8, 0x02, 0x20, 0x03, 0x80, 0x0F, + 0x80, 0x1F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x07, 0xBC, 0x0E, 0x78, 0x3C, 0x78, 0x7F, 0xF1, + 0xFF, 0xF3, 0xFF, 0xE7, 0x83, 0xDE, 0x07, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x01, + 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0x60, 0x0E, 0x03, 0xFC, 0x0F, 0xF0, 0x7F, 0x80, 0x1C, 0x1F, + 0xF1, 0xFF, 0x8F, 0xFC, 0xF1, 0xE7, 0xFF, 0x1F, 0xF8, 0x7F, 0x80, 0xF0, 0x00, 0x00, 0xC0, 0x03, + 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x3F, 0x01, 0xFC, 0x03, 0xB8, 0x02, 0x20, 0x03, 0x80, 0x0F, 0x80, + 0x1F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x07, 0xBC, 0x0E, 0x78, 0x3C, 0x78, 0x7F, 0xF1, 0xFF, + 0xF3, 0xFF, 0xE7, 0x83, 0xDE, 0x07, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x70, 0x0F, 0x01, 0xF0, 0xEE, + 0x3E, 0x8F, 0xE0, 0xD8, 0x0E, 0x0F, 0xF0, 0xFF, 0x1F, 0xE0, 0x1C, 0x7F, 0xDF, 0xFB, 0xFF, 0xF1, + 0xFF, 0xFD, 0xFF, 0x9F, 0xE0, 0xF0, 0x00, 0x20, 0x01, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x17, 0x80, + 0x7E, 0x03, 0xF8, 0x07, 0x70, 0x04, 0x40, 0x07, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x01, 0xFC, + 0x07, 0xBC, 0x0F, 0x78, 0x1C, 0xF0, 0x78, 0xF0, 0xFF, 0xE3, 0xFF, 0xE7, 0xFF, 0xCF, 0x07, 0xBC, + 0x0F, 0xF8, 0x0F, 0x01, 0xC0, 0x1F, 0x01, 0xF0, 0x0F, 0x0E, 0xE1, 0xFC, 0x3F, 0x81, 0xB0, 0x0E, + 0x07, 0xF8, 0x3F, 0xC3, 0xFC, 0x01, 0xC3, 0xFE, 0x7F, 0xE7, 0xFE, 0xF1, 0xEF, 0xFE, 0x7F, 0xE3, + 0xFC, 0x0F, 0x00, 0x06, 0x40, 0x1F, 0xE0, 0x7F, 0x80, 0x6E, 0x00, 0x10, 0x00, 0x70, 0x03, 0xF8, + 0x07, 0x70, 0x04, 0x40, 0x07, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x01, 0xFC, 0x07, 0xBC, 0x0F, + 0x78, 0x1C, 0xF0, 0x78, 0xF0, 0xFF, 0xE3, 0xFF, 0xE7, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF8, 0x0F, + 0x1D, 0x87, 0xF1, 0xFE, 0x00, 0x00, 0xE0, 0x3E, 0x0F, 0xE0, 0xD8, 0x0E, 0x0F, 0xF0, 0xFF, 0x1F, + 0xE0, 0x1C, 0x7F, 0xDF, 0xFB, 0xFF, 0xF1, 0xFF, 0xFD, 0xFF, 0x9F, 0xE0, 0xF0, 0x01, 0x00, 0x07, + 0x00, 0x3F, 0x80, 0x77, 0x00, 0x44, 0x00, 0x70, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, + 0x7B, 0xC0, 0xF7, 0x81, 0xCF, 0x07, 0x8F, 0x0F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0xF0, 0x7B, 0xC0, + 0xFF, 0x80, 0xF0, 0x00, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0x00, 0x00, 0x01, 0xC0, 0x7C, + 0x1F, 0xC1, 0xB0, 0x1C, 0x1F, 0xE1, 0xFE, 0x3F, 0xC0, 0x38, 0xFF, 0xBF, 0xF7, 0xFF, 0xE3, 0xFF, + 0xFB, 0xFF, 0x3F, 0xC1, 0xE0, 0x38, 0x07, 0x80, 0xF0, 0x0C, 0x00, 0x00, 0x40, 0x01, 0xC0, 0x07, + 0x80, 0x1E, 0x00, 0x38, 0x01, 0xDC, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0x07, 0x00, 0x1F, 0x00, + 0x3E, 0x00, 0xFE, 0x01, 0xFC, 0x07, 0xBC, 0x0F, 0x78, 0x1C, 0xF0, 0x78, 0xF0, 0xFF, 0xE3, 0xFF, + 0xE7, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF8, 0x0F, 0x01, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x60, 0x73, + 0x0F, 0xE0, 0xFC, 0x0E, 0x01, 0xC1, 0xFE, 0x1F, 0xE3, 0xFC, 0x03, 0x8F, 0xFB, 0xFF, 0x7F, 0xFE, + 0x3F, 0xFF, 0xBF, 0xF3, 0xFC, 0x1E, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, + 0x01, 0xDC, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0x07, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x01, + 0xFC, 0x07, 0xBC, 0x0F, 0x78, 0x1C, 0xF0, 0x78, 0xF0, 0xFF, 0xE3, 0xFF, 0xE7, 0xFF, 0xCF, 0x07, + 0xBC, 0x0F, 0xF8, 0x0F, 0x00, 0x03, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x7B, 0x0F, 0xE0, 0xFC, 0x0E, + 0x01, 0xC1, 0xFE, 0x1F, 0xE3, 0xFC, 0x03, 0x8F, 0xFB, 0xFF, 0x7F, 0xFE, 0x3F, 0xFF, 0xBF, 0xF3, + 0xFC, 0x1E, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x20, 0x03, 0xB8, + 0x07, 0xF0, 0x07, 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xFC, 0x03, 0xF8, 0x0F, + 0x78, 0x1E, 0xF0, 0x39, 0xE0, 0xF1, 0xE1, 0xFF, 0xC7, 0xFF, 0xCF, 0xFF, 0x9E, 0x0F, 0x78, 0x1F, + 0xF0, 0x1E, 0x1F, 0x03, 0xE0, 0x1C, 0x07, 0x80, 0xE0, 0x73, 0x0F, 0xE0, 0xFC, 0x0E, 0x01, 0xC1, + 0xFE, 0x1F, 0xE3, 0xFC, 0x03, 0x8F, 0xFB, 0xFF, 0x7F, 0xFE, 0x3F, 0xFF, 0xBF, 0xF3, 0xFC, 0x1E, + 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x00, 0x01, 0xDC, 0x03, 0xF8, 0x03, 0xF0, + 0x03, 0x80, 0x07, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x01, 0xFC, 0x07, 0xBC, 0x0F, 0x78, 0x1C, + 0xF0, 0x78, 0xF0, 0xFF, 0xE3, 0xFF, 0xE7, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF8, 0x0F, 0x1D, 0x87, + 0xF8, 0xFE, 0x08, 0x83, 0x98, 0x7F, 0x07, 0xE0, 0x70, 0x0E, 0x0F, 0xF0, 0xFF, 0x1F, 0xE0, 0x1C, + 0x7F, 0xDF, 0xFB, 0xFF, 0xF1, 0xFF, 0xFD, 0xFF, 0x9F, 0xE0, 0xF0, 0x00, 0x00, 0x1D, 0xC0, 0x3F, + 0x80, 0x3F, 0x00, 0x38, 0x00, 0x70, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x7B, 0xC0, + 0xF7, 0x81, 0xCF, 0x07, 0x8F, 0x0F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0xF0, 0x7B, 0xC0, 0xFF, 0x80, + 0xF0, 0x00, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0x00, 0x39, 0x87, 0xF0, 0x7E, 0x07, 0x00, + 0xE0, 0xFF, 0x0F, 0xF1, 0xFE, 0x01, 0xC7, 0xFD, 0xFF, 0xBF, 0xFF, 0x1F, 0xFF, 0xDF, 0xF9, 0xFE, + 0x0F, 0x01, 0xC0, 0x3C, 0x07, 0x80, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x01, 0xE0, 0x3F, + 0xF7, 0xFE, 0xFF, 0xDE, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x0E, 0x03, 0xC0, + 0x38, 0x02, 0x00, 0x06, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x78, 0xE7, 0xFF, 0x7F, 0xF7, 0xFE, 0x78, + 0x07, 0xFE, 0x3F, 0xE1, 0xFE, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x1E, 0x03, 0xE0, + 0x1C, 0x07, 0x80, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x03, 0xC0, 0x7F, 0xEF, 0xFD, 0xFF, + 0xBC, 0x07, 0x80, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, + 0x00, 0x60, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0x8E, 0x7F, 0xF7, 0xFF, 0x7F, 0xE7, 0x80, 0x7F, 0xE3, + 0xFE, 0x1F, 0xE0, 0x78, 0x00, 0x07, 0xF1, 0xFE, 0x1F, 0x80, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDE, 0x03, 0xC0, 0x7F, 0xEF, 0xFD, 0xFF, 0xBC, 0x07, 0x80, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, + 0x1C, 0x83, 0xFC, 0x3F, 0xC1, 0x30, 0x06, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x78, 0xE7, 0xFF, 0x7F, + 0xF7, 0xFE, 0x78, 0x07, 0xFE, 0x3F, 0xE1, 0xFE, 0x07, 0x80, 0x00, 0x20, 0x03, 0x80, 0x3C, 0x0B, + 0xC0, 0xFC, 0x1F, 0xC0, 0xEE, 0x02, 0x20, 0xFF, 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0x8F, 0x00, 0x78, + 0x03, 0xFF, 0x1F, 0xF8, 0xFF, 0xC7, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0xFE, 0x7F, 0xF3, 0xFF, 0x80, + 0x00, 0x30, 0x03, 0xC0, 0x3E, 0x0F, 0xC1, 0xFC, 0x0F, 0xC0, 0x66, 0x00, 0xC0, 0x1F, 0xC1, 0xFF, + 0x1F, 0xF8, 0xF1, 0xC7, 0xFF, 0x3F, 0xF9, 0xFF, 0x8F, 0x00, 0x7F, 0xE1, 0xFF, 0x07, 0xF8, 0x0F, + 0x00, 0x01, 0x00, 0x70, 0x1F, 0x03, 0xE0, 0xFC, 0x7F, 0x0E, 0xE0, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xEF, 0x01, 0xE0, 0x3F, 0xF7, 0xFE, 0xFF, 0xDE, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xFF, 0xFF, + 0xF8, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x1E, 0x07, 0xF1, 0xFE, 0x1F, 0x81, 0x98, 0x06, 0x01, 0xFC, + 0x3F, 0xE7, 0xFE, 0x78, 0xE7, 0xFF, 0x7F, 0xF7, 0xFE, 0x78, 0x07, 0xFE, 0x3F, 0xE1, 0xFE, 0x07, + 0x80, 0x01, 0xE0, 0x1F, 0x00, 0x70, 0x4F, 0x0F, 0xE3, 0xF8, 0x3B, 0x81, 0x10, 0xFF, 0xEF, 0xFE, + 0xFF, 0xEF, 0xFC, 0xF0, 0x0F, 0x00, 0xFF, 0xCF, 0xFC, 0xFF, 0xCF, 0x00, 0xF0, 0x0F, 0x00, 0xFF, + 0xEF, 0xFE, 0xFF, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0xE0, 0x7F, 0x0F, 0xF0, 0x7E, 0x03, + 0x30, 0x06, 0x00, 0xFE, 0x0F, 0xF8, 0xFF, 0xC7, 0x8E, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x78, 0x03, + 0xFF, 0x0F, 0xF8, 0x3F, 0xC0, 0x78, 0x00, 0x08, 0x87, 0xF8, 0xFE, 0x1B, 0xC0, 0x40, 0x1E, 0x0F, + 0xE1, 0xDC, 0x11, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x3C, 0x07, 0xFE, 0xFF, 0xDF, 0xFB, + 0xC0, 0x78, 0x0F, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0xC3, 0xFC, 0x3F, 0xC1, 0x10, 0x07, 0x01, + 0xF8, 0x1F, 0x81, 0x98, 0x06, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x78, 0xE7, 0xFF, 0x7F, 0xF7, 0xFE, + 0x78, 0x07, 0xFE, 0x3F, 0xE1, 0xFE, 0x07, 0x80, 0x04, 0x01, 0xE0, 0xFE, 0x1D, 0xC1, 0x11, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x03, 0xC0, 0x7F, 0xEF, 0xFD, 0xFF, 0xBC, 0x07, 0x80, 0xF0, 0x1F, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x1C, 0x07, 0x80, 0x70, 0x04, 0x00, 0x00, 0x00, 0x70, 0x1F, 0x81, + 0xF8, 0x19, 0x80, 0x60, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0x8E, 0x7F, 0xF7, 0xFF, 0x7F, 0xE7, 0x80, + 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x78, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x79, 0xF1, 0xCF, 0x39, + 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x73, 0xE7, 0xCE, 0x70, 0xC7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x7F, 0xF2, 0xFF, 0xF6, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x60, 0x0F, 0xC0, 0x7F, + 0xE1, 0xFF, 0xE3, 0xF7, 0xEF, 0x83, 0xDE, 0x07, 0xBC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x7F, + 0xC0, 0xF7, 0xC3, 0xE7, 0xFF, 0x87, 0xFF, 0x07, 0xF8, 0x01, 0xC0, 0x03, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x18, 0x00, 0x06, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x07, 0x00, 0x70, 0x0F, 0x00, 0x70, 0x02, 0x00, 0x07, 0x80, 0x0F, + 0x80, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x01, 0xF8, 0x0F, 0xFC, 0x3F, 0xFC, 0x7E, 0xFD, 0xF0, 0x7B, + 0xC0, 0xF7, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x0F, 0xF8, 0x1E, 0xF8, 0x7C, 0xFF, 0xF0, 0xFF, + 0xE0, 0xFF, 0x00, 0x38, 0x00, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, 0x07, 0x00, 0x70, 0x1F, 0xC3, + 0xFE, 0x7F, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x70, + 0x00, 0x18, 0x00, 0x38, 0x00, 0xF0, 0x1B, 0xC0, 0x7F, 0x01, 0xF8, 0x03, 0xF8, 0x02, 0x20, 0x0F, + 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xF7, 0xEF, 0x83, 0xDE, 0x07, 0xBC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, + 0xE0, 0x7F, 0xC0, 0xF7, 0xC3, 0xE7, 0xFF, 0x87, 0xFF, 0x07, 0xF8, 0x01, 0xC0, 0x00, 0x00, 0x01, + 0x80, 0x1E, 0x01, 0xE0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0x30, 0x06, 0x00, 0xFE, 0x0F, 0xF8, 0xFF, + 0xC7, 0x8F, 0x3C, 0x79, 0xE3, 0xCF, 0x1E, 0x78, 0xF3, 0xFF, 0x0F, 0xF8, 0x3F, 0x80, 0x70, 0x00, + 0x00, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x1F, 0x80, 0x7A, 0x01, 0xF8, 0x03, 0xF8, 0x02, 0x20, 0x0F, + 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xF7, 0xEF, 0x83, 0xDE, 0x07, 0xBC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, + 0xE0, 0x7F, 0xC0, 0xF7, 0xC3, 0xE7, 0xFF, 0x87, 0xFF, 0x07, 0xF8, 0x01, 0xC0, 0x01, 0x80, 0x38, + 0x03, 0xC0, 0x1E, 0x07, 0xE0, 0xF8, 0x1F, 0xC1, 0x98, 0x06, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x78, + 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x07, 0x00, 0x00, 0x20, 0x01, + 0xF0, 0x03, 0xE0, 0x01, 0xC0, 0x37, 0x80, 0xFE, 0x03, 0xF0, 0x07, 0xF0, 0x04, 0x40, 0x1F, 0x80, + 0xFF, 0xC3, 0xFF, 0xC7, 0xEF, 0xDF, 0x07, 0xBC, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, + 0xFF, 0x81, 0xEF, 0x87, 0xCF, 0xFF, 0x0F, 0xFE, 0x0F, 0xF0, 0x03, 0x80, 0x00, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF0, 0x77, 0x07, 0xF0, 0x7F, 0x03, 0x30, 0x06, 0x00, 0xFE, 0x0F, 0xF8, 0xFF, 0xC7, + 0x8F, 0x3C, 0x79, 0xE3, 0xCF, 0x1E, 0x78, 0xF3, 0xFF, 0x0F, 0xF8, 0x3F, 0x80, 0x70, 0x00, 0x06, + 0x40, 0x1F, 0xC0, 0x7F, 0x80, 0x4E, 0x00, 0x30, 0x00, 0xF0, 0x03, 0xF0, 0x07, 0xF0, 0x04, 0x40, + 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0xC7, 0xEF, 0xDF, 0x07, 0xBC, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xC0, 0xFF, 0x81, 0xEF, 0x87, 0xCF, 0xFF, 0x0F, 0xFE, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xC1, + 0xFC, 0x3F, 0xC0, 0x00, 0x07, 0x00, 0xF8, 0x1F, 0xC1, 0x98, 0x06, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, + 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x07, 0x00, 0x03, 0x00, + 0x0F, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0x44, 0x01, 0xF8, 0x0F, 0xFC, 0x3F, 0xFC, 0x7E, 0xFD, 0xF0, + 0x7B, 0xC0, 0xF7, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x0F, 0xF8, 0x1E, 0xF8, 0x7C, 0xFF, 0xF0, + 0xFF, 0xE0, 0xFF, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x70, + 0x0F, 0x81, 0xFC, 0x19, 0x80, 0x60, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x8F, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x70, 0x07, 0x00, 0xF0, 0x07, 0x00, 0x20, 0x01, 0x80, + 0x07, 0x80, 0x1E, 0x00, 0x38, 0xF0, 0x21, 0xE1, 0xFB, 0xCF, 0xFF, 0x3F, 0xFE, 0x7E, 0xFD, 0xF0, + 0x7B, 0xC0, 0xF7, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x0F, 0xF8, 0x1E, 0xF8, 0x7C, 0xFF, 0xF0, + 0xFF, 0xE0, 0xFF, 0x00, 0x38, 0x00, 0x03, 0x00, 0x1C, 0x01, 0xE0, 0x1E, 0x60, 0xE7, 0x83, 0x3C, + 0x7F, 0xE7, 0xFE, 0x7F, 0xE3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, 0xFF, 0x87, 0xFC, + 0x1F, 0xC0, 0x38, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0xF0, 0x19, 0xE1, 0xFB, 0xCF, + 0xFF, 0x3F, 0xFE, 0x7E, 0xFD, 0xF0, 0x7B, 0xC0, 0xF7, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x0F, + 0xF8, 0x1E, 0xF8, 0x7C, 0xFF, 0xF0, 0xFF, 0xE0, 0xFF, 0x00, 0x38, 0x00, 0x04, 0x00, 0x70, 0x03, + 0xC0, 0x0F, 0x60, 0x37, 0x83, 0x3C, 0x7F, 0xE7, 0xFE, 0x7F, 0xE3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, + 0x8F, 0x3C, 0x79, 0xFF, 0x87, 0xFC, 0x1F, 0xC0, 0x38, 0x00, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, + 0x1C, 0xF0, 0x31, 0xE1, 0xFB, 0xCF, 0xFF, 0x3F, 0xFE, 0x7E, 0xFD, 0xF0, 0x7B, 0xC0, 0xF7, 0x80, + 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x0F, 0xF8, 0x1E, 0xF8, 0x7C, 0xFF, 0xF0, 0xFF, 0xE0, 0xFF, 0x00, + 0x38, 0x00, 0x0E, 0x00, 0x7C, 0x03, 0xE0, 0x0F, 0x60, 0x77, 0x83, 0xBC, 0x7F, 0xE7, 0xFE, 0x7F, + 0xE3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, 0xFF, 0x87, 0xFC, 0x1F, 0xC0, 0x38, 0x00, + 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0xFE, 0xF0, 0x01, 0xE1, 0xFB, 0xCF, 0xFF, 0x3F, 0xFE, 0x7E, + 0xFD, 0xF0, 0x7B, 0xC0, 0xF7, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x0F, 0xF8, 0x1E, 0xF8, 0x7C, + 0xFF, 0xF0, 0xFF, 0xE0, 0xFF, 0x00, 0x38, 0x00, 0x0E, 0xC0, 0xFE, 0x0F, 0xFC, 0x23, 0xF0, 0x67, + 0x8F, 0xFC, 0xFF, 0xCF, 0xFC, 0x78, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3F, 0xF0, 0xFF, + 0x83, 0xF8, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x3C, 0x3F, 0x79, 0xFF, 0xE7, 0xFF, 0xCF, 0xDF, 0xBE, + 0x0F, 0x78, 0x1E, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x81, 0xFF, 0x03, 0xDF, 0x0F, 0x9F, 0xFE, + 0x1F, 0xFC, 0x1F, 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x30, + 0x03, 0xC1, 0x9E, 0x3F, 0xF3, 0xFF, 0x3F, 0xF1, 0xE3, 0xCF, 0x1E, 0x78, 0xF3, 0xC7, 0x9E, 0x3C, + 0xFF, 0xC3, 0xFE, 0x0F, 0xE0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x38, 0x00, 0x80, 0xF0, 0x77, 0x83, + 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xF1, + 0xE7, 0xFF, 0x3F, 0xF0, 0xFF, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x01, 0xC0, 0x04, 0x00, 0xF3, 0xFC, + 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xFF, 0xDF, 0xF3, 0xFC, 0x38, 0x0E, 0x07, 0x81, + 0xE0, 0x30, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x78, 0x3B, 0xC1, 0xFE, 0x0F, 0xF0, + 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0xF3, 0xFF, 0x9F, + 0xF8, 0x7F, 0x80, 0x70, 0x00, 0x1C, 0x07, 0x81, 0xF0, 0x3C, 0x0E, 0x03, 0x0F, 0x3F, 0xCF, 0xF3, + 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0xFD, 0xFF, 0x3F, 0xC3, 0x80, 0x03, 0x00, 0x07, 0x00, + 0x1E, 0x00, 0x78, 0x70, 0x61, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3C, 0xF0, 0x79, 0xE0, 0xF3, 0xC1, + 0xE7, 0x83, 0xCF, 0x07, 0x9E, 0x0F, 0x3C, 0x1E, 0x78, 0x3C, 0xF8, 0xF0, 0xFF, 0xE1, 0xFF, 0x81, + 0xFE, 0x00, 0x70, 0x00, 0x06, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x61, 0x87, 0x80, 0x3F, 0xCF, 0xDE, + 0x7C, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, 0xE3, 0xFF, 0x0F, 0xF8, 0x3F, 0xC0, + 0x70, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x70, 0x31, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, + 0x3C, 0xF0, 0x79, 0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x07, 0x9E, 0x0F, 0x3C, 0x1E, 0x78, 0x3C, + 0xF8, 0xF0, 0xFF, 0xE1, 0xFF, 0x81, 0xFE, 0x00, 0x70, 0x00, 0x18, 0x01, 0xC0, 0x0F, 0x00, 0x3C, + 0x60, 0xE7, 0x80, 0x3F, 0xCF, 0xDE, 0x7C, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, + 0xE3, 0xFF, 0x0F, 0xF8, 0x3F, 0xC0, 0x70, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x3C, 0x70, + 0x71, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3C, 0xF0, 0x79, 0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x07, + 0x9E, 0x0F, 0x3C, 0x1E, 0x78, 0x3C, 0xF8, 0xF0, 0xFF, 0xE1, 0xFF, 0x81, 0xFE, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x60, 0xE7, 0x86, 0x3F, 0xCF, 0xDE, 0x7C, 0xF3, 0xC7, 0x9E, + 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, 0xE3, 0xFF, 0x0F, 0xF8, 0x3F, 0xC0, 0x70, 0x00, 0x00, 0x00, + 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x70, 0x01, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x3C, 0xF0, 0x79, 0xE0, + 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x07, 0x9E, 0x0F, 0x3C, 0x1E, 0x78, 0x3C, 0xF8, 0xF0, 0xFF, 0xE1, + 0xFF, 0x81, 0xFE, 0x00, 0x70, 0x00, 0x39, 0x03, 0xFC, 0x1F, 0xEC, 0x4C, 0xF0, 0x07, 0xF9, 0xFB, + 0xCF, 0x9E, 0x78, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x7F, 0xE1, 0xFF, 0x07, 0xF8, + 0x0E, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0x9E, 0x0F, 0x3C, 0x1E, 0x78, + 0x3C, 0xF0, 0x79, 0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x07, 0x9F, 0x1E, 0x1F, 0xFC, 0x3F, 0xF0, + 0x3F, 0xC0, 0x0E, 0x00, 0x1C, 0x00, 0x78, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x30, 0x03, 0xC0, + 0x1F, 0xE7, 0xEF, 0x3E, 0x79, 0xE3, 0xCF, 0x1E, 0x78, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xFF, 0x87, + 0xFC, 0x1F, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x03, 0x00, 0x06, 0x00, 0x38, 0x00, 0xF0, + 0x01, 0xE0, 0x03, 0x80, 0x00, 0x0F, 0x83, 0xFE, 0x1E, 0x7C, 0x78, 0xF3, 0xC3, 0xFF, 0x07, 0xF8, + 0x1F, 0xE0, 0x3F, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, + 0x18, 0x03, 0xC0, 0x3E, 0x00, 0xE0, 0x06, 0x00, 0x00, 0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, + 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x0F, 0x01, 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, + 0xF0, 0x3F, 0xE1, 0xF7, 0x87, 0x9F, 0x3C, 0x3C, 0xF0, 0xFF, 0x81, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, + 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x07, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xC0, 0xF1, 0xEF, 0x1E, 0x79, 0xE7, 0x9C, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F, + 0x81, 0xF0, 0x0F, 0x01, 0xE6, 0xFE, 0xFF, 0xCF, 0xF8, 0x70, 0x0F, 0x80, 0x3E, 0x00, 0x3C, 0x01, + 0xE0, 0x07, 0x03, 0xC0, 0xFF, 0x87, 0xDE, 0x1E, 0x7C, 0xF0, 0xF3, 0xC3, 0xFE, 0x07, 0xF8, 0x0F, + 0xC0, 0x3F, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x0E, 0x01, 0xF0, + 0x1F, 0x00, 0x70, 0x0E, 0x00, 0x40, 0xF1, 0xEF, 0x1E, 0x79, 0xE7, 0x9C, 0x7B, 0xC3, 0xFC, 0x3F, + 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x0F, 0x01, 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, 0x00, 0x00, 0x3F, + 0x81, 0xFE, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0xFF, 0x87, 0xDE, 0x1E, 0x7C, 0xF0, 0xF3, 0xC3, 0xFE, + 0x07, 0xF8, 0x0F, 0xC0, 0x3F, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, + 0x1D, 0x83, 0xFC, 0x3F, 0x81, 0x30, 0x00, 0x0F, 0x1E, 0xF1, 0xE7, 0x9E, 0x79, 0xC7, 0xBC, 0x3F, + 0xC3, 0xF8, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0xF0, 0x1E, 0x0F, 0xE0, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0x49, 0xE3, 0x1E, 0x78, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x10, 0x6F, + 0xF6, 0xD3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0x21, 0x8F, 0xDB, 0x2C, 0x30, 0xC3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0xFD, 0xFB, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3B, 0xDE, + 0xE7, 0x38, 0x7B, 0xDC, 0xEF, 0x70, 0x7B, 0xDC, 0xEF, 0x70, 0x3B, 0x9E, 0xE7, 0x79, 0xDE, 0x77, + 0x9D, 0xE0, 0x7F, 0xBF, 0xDD, 0xEE, 0xFF, 0x77, 0x38, 0x7F, 0xBF, 0xDD, 0xEE, 0xFF, 0x77, 0x38, + 0x0E, 0x03, 0x80, 0xE0, 0x38, 0xFF, 0xFF, 0xFF, 0xFC, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0xFF, 0xFF, 0xFF, 0xFC, + 0x38, 0x0E, 0x03, 0x8F, 0xFF, 0xFF, 0xFF, 0xC3, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x3C, 0xFD, + 0xFB, 0xF7, 0xE7, 0x80, 0xF0, 0xE1, 0xFE, 0x3E, 0x3F, 0xC7, 0xC7, 0xF8, 0x70, 0xF0, 0x3E, 0x0E, + 0x00, 0x0F, 0xE3, 0xC0, 0x01, 0xDC, 0xF0, 0x00, 0x7B, 0xDE, 0x00, 0x0F, 0x7F, 0x80, 0x00, 0xEE, + 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xF7, 0x7C, 0x3E, 0x01, 0xFF, 0xCF, 0xE0, 0x3B, 0xBF, 0xDC, + 0x0F, 0x73, 0xF3, 0x81, 0xCE, 0x7E, 0x70, 0x79, 0xDF, 0xEE, 0x1E, 0x3F, 0x9F, 0xC3, 0xC3, 0xE1, + 0xF0, 0x00, 0x38, 0xF3, 0xE7, 0x9F, 0x1E, 0x3E, 0x3C, 0x38, 0x00, 0x00, 0xE1, 0xE3, 0xC3, 0xC7, + 0xCF, 0x3C, 0x78, 0xE0, 0x00, 0x00, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, + 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x00, 0x7C, 0x7E, 0xFE, 0xE7, 0xE7, 0xE7, + 0xFE, 0x7E, 0x7C, 0x1E, 0x3E, 0x7E, 0x6E, 0xFF, 0xFF, 0x0E, 0x0E, 0x7E, 0xFD, 0xC3, 0xE7, 0xE1, + 0xD3, 0xFF, 0xFC, 0x1E, 0x3E, 0x78, 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x3C, 0xFE, 0xFE, 0x0E, 0x1C, + 0x1C, 0x38, 0x38, 0x38, 0x7C, 0x7E, 0xEE, 0x7E, 0x7E, 0xFE, 0xEF, 0xFE, 0x7E, 0x7C, 0x7E, 0xEE, + 0xEE, 0x7E, 0x7E, 0x1E, 0x7C, 0x78, 0x7C, 0x7E, 0xFE, 0xE7, 0xE7, 0xE7, 0xFE, 0x7E, 0x7C, 0x1D, + 0xF7, 0xDF, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xFD, 0xB8, 0xF3, 0xCF, 0x1C, 0x7F, 0xFE, 0xFD, 0xFD, + 0x79, 0xE3, 0xE1, 0xD3, 0xFF, 0xFC, 0x1E, 0x3E, 0x7E, 0x6E, 0xFF, 0xFF, 0x0E, 0x0E, 0x7E, 0xFD, + 0xC3, 0xE7, 0xE1, 0xD3, 0xFF, 0xFC, 0x1E, 0x3E, 0x78, 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x3C, 0xFE, + 0xFE, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x7C, 0x7E, 0xEE, 0x7E, 0x7E, 0xFE, 0xEF, 0xFE, 0x7E, + 0x7C, 0x7E, 0xEE, 0xEE, 0x7E, 0x7E, 0x1E, 0x7C, 0x78, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xEF, 0xF0, + 0xEF, 0xF7, 0xEF, 0xF7, 0xEF, 0xF7, 0xEF, 0xF7, 0xEF, 0xF7, 0xEF, 0xF7, 0x1F, 0xF7, 0xFE, 0xF7, + 0xFE, 0xF7, 0xFC, 0x07, 0xF0, 0xFF, 0x1F, 0xE1, 0xF2, 0x3C, 0x07, 0xFE, 0x7F, 0xC3, 0xC0, 0x7F, + 0xC7, 0xFC, 0x3C, 0x01, 0xF3, 0x1F, 0xF0, 0xFF, 0x07, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC3, 0xF0, 0x3F, 0xC3, 0xFC, 0x1F, 0xC3, 0xF0, 0x3F, 0x03, 0xF0, 0x0F, + 0x00, 0x3F, 0x87, 0xFC, 0x3F, 0xC3, 0x3E, 0xFF, 0xFF, 0xFF, 0x1F, 0x83, 0xF0, 0xFF, 0xFF, 0xFF, + 0x78, 0x07, 0xCC, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x7F, 0xFB, 0xFF, 0xC1, 0xF0, 0x03, 0x87, 0xFF, + 0x3F, 0xF8, 0x0F, 0x01, 0xF8, 0x7F, 0x83, 0xF8, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1E, + 0x00, 0x3F, 0x83, 0xFC, 0x3F, 0xE3, 0x3F, 0x00, 0xF1, 0xFF, 0x3F, 0xF7, 0xFF, 0x7D, 0xFF, 0x0F, + 0xF0, 0xF7, 0xBE, 0x7F, 0xE7, 0xFC, 0x1F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x3F, 0x00, 0x7F, 0x00, + 0xFE, 0x03, 0xDC, 0x07, 0xBC, 0x1E, 0x78, 0x3C, 0x78, 0x78, 0xF1, 0xE1, 0xE3, 0xC1, 0xE7, 0xFF, + 0xDF, 0xFF, 0xBF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, + 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, + 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x78, + 0x1E, 0x07, 0xC0, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, - 0x3C, 0x00, 0x7C, 0x7E, 0xFE, 0xE7, 0xE7, 0xE7, 0xFE, 0x7E, 0x7C, 0x1E, 0x3E, 0x7E, 0x6E, 0xFF, - 0xFF, 0x0E, 0x0E, 0x7E, 0xFD, 0xC3, 0xE7, 0xE1, 0xD3, 0xFF, 0xFC, 0x1E, 0x3E, 0x78, 0x7E, 0xFE, - 0xEE, 0xFE, 0x7E, 0x3C, 0xFE, 0xFE, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x7C, 0x7E, 0xEE, 0x7E, - 0x7E, 0xFE, 0xEF, 0xFE, 0x7E, 0x7C, 0x7E, 0xEE, 0xEE, 0x7E, 0x7E, 0x1E, 0x7C, 0x78, 0x7C, 0x7E, - 0xFE, 0xE7, 0xE7, 0xE7, 0xFE, 0x7E, 0x7C, 0x1D, 0xF7, 0xDF, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xFD, - 0xB8, 0xF3, 0xCF, 0x1C, 0x7F, 0xFE, 0xFD, 0xFD, 0x79, 0xE3, 0xE1, 0xD3, 0xFF, 0xFC, 0x1E, 0x3E, - 0x7E, 0x6E, 0xFF, 0xFF, 0x0E, 0x0E, 0x7E, 0xFD, 0xC3, 0xE7, 0xE1, 0xD3, 0xFF, 0xFC, 0x1E, 0x3E, - 0x78, 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x3C, 0xFE, 0xFE, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x7C, - 0x7E, 0xEE, 0x7E, 0x7E, 0xFE, 0xEF, 0xFE, 0x7E, 0x7C, 0x7E, 0xEE, 0xEE, 0x7E, 0x7E, 0x1E, 0x7C, - 0x78, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xEF, 0xF0, 0xEF, 0xF7, 0xEF, 0xF7, 0xEF, 0xF7, 0xEF, 0xF7, - 0xEF, 0xF7, 0xEF, 0xF7, 0x1F, 0xF7, 0xFE, 0xF7, 0xFE, 0xF7, 0xFC, 0x07, 0xF0, 0xFF, 0x1F, 0xE1, - 0xF2, 0x3C, 0x07, 0xFE, 0x7F, 0xC3, 0xC0, 0x7F, 0xC7, 0xFC, 0x3C, 0x01, 0xF3, 0x1F, 0xF0, 0xFF, - 0x07, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0xC0, 0xFC, 0x0F, 0xC3, 0xF0, 0x3F, 0xC3, - 0xFC, 0x1F, 0xC3, 0xF0, 0x3F, 0x03, 0xF0, 0x0F, 0x00, 0x3F, 0x87, 0xFC, 0x3F, 0xC3, 0x3E, 0xFF, - 0xFF, 0xFF, 0x1F, 0x83, 0xF0, 0xFF, 0xFF, 0xFF, 0x78, 0x07, 0xCC, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, - 0x7F, 0xFB, 0xFF, 0xC1, 0xF0, 0x03, 0x87, 0xFF, 0x3F, 0xF8, 0x0F, 0x01, 0xF8, 0x7F, 0x83, 0xF8, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x3F, 0x83, 0xFC, 0x3F, 0xE3, 0x3F, 0x00, - 0xF1, 0xFF, 0x3F, 0xF7, 0xFF, 0x7D, 0xFF, 0x0F, 0xF0, 0xF7, 0xBE, 0x7F, 0xE7, 0xFC, 0x1F, 0x80, - 0x07, 0x80, 0x0F, 0x80, 0x3F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0xDC, 0x07, 0xBC, 0x1E, 0x78, 0x3C, - 0x78, 0x78, 0xF1, 0xE1, 0xE3, 0xC1, 0xE7, 0xFF, 0xDF, 0xFF, 0xBF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, - 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x03, 0xC0, - 0x7C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0xC0, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, - 0xE0, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, - 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x00, 0x77, 0xFE, 0xE0, 0x00, 0x3C, 0x00, - 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x0E, 0x38, 0xFD, 0xE1, 0xF7, 0x87, 0xFC, - 0x03, 0xF0, 0x0F, 0xC0, 0x1E, 0x00, 0x78, 0x00, 0x3D, 0xF3, 0xFF, 0xFF, 0xEF, 0xCE, 0x7F, 0xFB, - 0xBF, 0xFC, 0xF7, 0xC0, 0x00, 0x07, 0xC7, 0xE3, 0xF3, 0xE1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x7E, 0x3E, 0x1F, 0x00, 0x00, 0x3C, 0x77, 0xEF, 0x7F, - 0xEF, 0xFE, 0xE3, 0xC0, 0x00, 0x3C, 0x77, 0xFF, 0x7F, 0xEF, 0xFE, 0xE3, 0xC0, 0x01, 0x80, 0xE0, - 0x3B, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFD, 0xC0, 0x70, 0x18, 0x00, 0x03, - 0xCF, 0xFF, 0xFF, 0xFE, 0xF8, 0x3F, 0xEF, 0xFC, 0xFF, 0x03, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, - 0xF0, 0x3F, 0xCF, 0xFD, 0xFF, 0x07, 0xDF, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, - 0xC0, 0x3F, 0x1F, 0xBF, 0x9F, 0xFF, 0xDF, 0xFF, 0x6F, 0xAF, 0x07, 0x87, 0xFB, 0xFF, 0xFD, 0xFF, - 0xFE, 0xFF, 0xF0, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, 0xC3, 0xC1, - 0xE1, 0xE0, 0xF0, 0x3F, 0x7B, 0xFB, 0xFF, 0xDF, 0xF0, 0xFF, 0x00, 0x7F, 0xBF, 0xFD, 0xFF, 0xEF, - 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0x3F, 0x78, 0xFE, - 0xF3, 0xFD, 0xE7, 0xC3, 0xCF, 0x07, 0x9F, 0xEF, 0x3F, 0xDE, 0x7F, 0xBC, 0xF0, 0x79, 0xE0, 0xF3, - 0xC1, 0xE7, 0x83, 0xCF, 0x07, 0xDE, 0x0F, 0xBC, 0x1F, 0x78, 0x1E, 0x3F, 0x1F, 0xB9, 0xFC, 0xFF, - 0xFF, 0xF7, 0xF7, 0xFE, 0xDF, 0x4E, 0xF0, 0x78, 0x03, 0xFD, 0xFE, 0xFF, 0xF7, 0xFB, 0xFF, 0xDF, - 0xEF, 0xF0, 0x78, 0x3F, 0xC1, 0xE0, 0xFF, 0x07, 0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1, - 0xE0, 0xFF, 0x07, 0x83, 0xFC, 0x1E, 0x0F, 0x3F, 0x1F, 0xBC, 0xFE, 0x7F, 0x7B, 0xFD, 0xFC, 0xF7, - 0xDB, 0xE9, 0xEF, 0x07, 0x83, 0xDF, 0xEF, 0xF7, 0xBF, 0xDF, 0xEF, 0x7F, 0xBF, 0xDE, 0xF0, 0x78, - 0x3D, 0xE0, 0xF0, 0x7B, 0xC1, 0xE0, 0xF7, 0x83, 0xC1, 0xEF, 0x07, 0x83, 0xDE, 0x0F, 0x07, 0xFC, - 0x1E, 0x0F, 0xF8, 0x3C, 0x0F, + 0x3C, 0x00, 0x77, 0xFE, 0xE0, 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x03, 0xC0, + 0x0F, 0x0E, 0x38, 0xFD, 0xE1, 0xF7, 0x87, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x1E, 0x00, 0x78, 0x00, + 0x3D, 0xF3, 0xFF, 0xFF, 0xEF, 0xCE, 0x7F, 0xFB, 0xBF, 0xFC, 0xF7, 0xC0, 0x00, 0x07, 0xC7, 0xE3, + 0xF3, 0xE1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x7E, + 0x3E, 0x1F, 0x00, 0x00, 0x3C, 0x77, 0xEF, 0x7F, 0xEF, 0xFE, 0xE3, 0xC0, 0x00, 0x3C, 0x77, 0xFF, + 0x7F, 0xEF, 0xFE, 0xE3, 0xC0, 0x01, 0x80, 0xE0, 0x3B, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x70, 0xFF, + 0xFF, 0xFF, 0xFD, 0xC0, 0x70, 0x18, 0x00, 0x03, 0xCF, 0xFF, 0xFF, 0xFE, 0xF8, 0x3F, 0xEF, 0xFC, + 0xFF, 0x03, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0x3F, 0xCF, 0xFD, 0xFF, 0x07, 0xDF, 0xFF, + 0xFF, 0xFC, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0x1F, 0xBF, 0x9F, 0xFF, 0xDF, 0xFF, + 0x6F, 0xAF, 0x07, 0x87, 0xFB, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xF0, 0x78, 0x78, 0x3C, 0x3C, 0x1E, + 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x3F, 0x7B, 0xFB, 0xFF, 0xDF, + 0xF0, 0xFF, 0x00, 0x7F, 0xBF, 0xFD, 0xFF, 0xEF, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, + 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0x3F, 0x78, 0xFE, 0xF3, 0xFD, 0xE7, 0xC3, 0xCF, 0x07, 0x9F, 0xEF, + 0x3F, 0xDE, 0x7F, 0xBC, 0xF0, 0x79, 0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x07, 0xDE, 0x0F, 0xBC, + 0x1F, 0x78, 0x1E, 0x3F, 0x1F, 0xB9, 0xFC, 0xFF, 0xFF, 0xF7, 0xF7, 0xFE, 0xDF, 0x4E, 0xF0, 0x78, + 0x03, 0xFD, 0xFE, 0xFF, 0xF7, 0xFB, 0xFF, 0xDF, 0xEF, 0xF0, 0x78, 0x3F, 0xC1, 0xE0, 0xFF, 0x07, + 0x83, 0xFC, 0x1E, 0x0F, 0xF0, 0x78, 0x3F, 0xC1, 0xE0, 0xFF, 0x07, 0x83, 0xFC, 0x1E, 0x0F, 0x3F, + 0x1F, 0xBC, 0xFE, 0x7F, 0x7B, 0xFD, 0xFC, 0xF7, 0xDB, 0xE9, 0xEF, 0x07, 0x83, 0xDF, 0xEF, 0xF7, + 0xBF, 0xDF, 0xEF, 0x7F, 0xBF, 0xDE, 0xF0, 0x78, 0x3D, 0xE0, 0xF0, 0x7B, 0xC1, 0xE0, 0xF7, 0x83, + 0xC1, 0xEF, 0x07, 0x83, 0xDE, 0x0F, 0x07, 0xFC, 0x1E, 0x0F, 0xF8, 0x3C, 0x0F, }; static const EpdGlyph ubuntu_10_boldGlyphs[] = { @@ -1803,71 +1988,159 @@ static const EpdGlyph ubuntu_10_boldGlyphs[] = { { 10, 13, 181, 0, 13, 17, 16720 }, // U+05E8 { 15, 13, 262, 1, 13, 25, 16737 }, // U+05E9 { 14, 13, 241, 0, 13, 23, 16762 }, // U+05EA - { 14, 21, 220, 0, 21, 37, 16785 }, // U+1EF2 - { 12, 21, 182, 0, 17, 32, 16822 }, // U+1EF3 - { 2, 16, 0, -1, 15, 4, 16854 }, // U+200C - { 6, 16, 0, -3, 15, 12, 16858 }, // U+200D - { 6, 16, 0, -1, 15, 12, 16870 }, // U+200E - { 6, 16, 0, -5, 15, 12, 16882 }, // U+200F - { 7, 3, 106, 0, 8, 3, 16894 }, // U+2010 - { 11, 3, 167, 0, 8, 5, 16897 }, // U+2013 - { 21, 3, 333, 0, 8, 8, 16902 }, // U+2014 - { 21, 3, 333, 0, 8, 8, 16910 }, // U+2015 - { 5, 6, 81, 0, 16, 4, 16918 }, // U+2018 - { 5, 6, 81, 0, 16, 4, 16922 }, // U+2019 - { 5, 6, 81, 0, 3, 4, 16926 }, // U+201A - { 10, 6, 151, 0, 16, 8, 16930 }, // U+201C - { 9, 6, 151, 0, 16, 7, 16938 }, // U+201D - { 9, 6, 151, 0, 3, 7, 16945 }, // U+201E - { 10, 18, 165, 0, 15, 23, 16952 }, // U+2020 - { 10, 18, 165, 0, 15, 23, 16975 }, // U+2021 - { 7, 6, 121, 0, 10, 6, 16998 }, // U+2022 - { 19, 4, 333, 1, 4, 10, 17004 }, // U+2026 - { 27, 15, 440, 0, 15, 51, 17014 }, // U+2030 - { 7, 11, 109, 0, 11, 10, 17065 }, // U+2039 - { 7, 11, 109, 0, 11, 10, 17075 }, // U+203A - { 11, 15, 51, -4, 15, 21, 17085 }, // U+2044 - { 8, 9, 121, 0, 15, 9, 17106 }, // U+2070 - { 8, 8, 121, 0, 15, 8, 17115 }, // U+2074 - { 7, 9, 121, 0, 15, 8, 17123 }, // U+2075 - { 8, 9, 121, 0, 15, 9, 17131 }, // U+2076 - { 8, 8, 121, 0, 15, 8, 17140 }, // U+2077 - { 8, 9, 121, 0, 15, 9, 17148 }, // U+2078 - { 8, 9, 121, 0, 15, 9, 17157 }, // U+2079 - { 8, 9, 121, 0, 9, 9, 17166 }, // U+2080 - { 6, 9, 121, 0, 9, 7, 17175 }, // U+2081 - { 7, 9, 121, 0, 9, 8, 17182 }, // U+2082 - { 7, 9, 121, 0, 9, 8, 17190 }, // U+2083 - { 8, 8, 121, 0, 9, 8, 17198 }, // U+2084 - { 7, 9, 121, 0, 9, 8, 17206 }, // U+2085 - { 8, 9, 121, 0, 9, 9, 17214 }, // U+2086 - { 8, 8, 121, 0, 9, 8, 17223 }, // U+2087 - { 8, 9, 121, 0, 9, 9, 17231 }, // U+2088 - { 8, 9, 121, 0, 9, 9, 17240 }, // U+2089 - { 16, 13, 288, 1, 13, 26, 17249 }, // U+20AA - { 12, 15, 189, 0, 15, 23, 17275 }, // U+20AC - { 12, 15, 189, 0, 15, 23, 17298 }, // U+20AE - { 12, 15, 189, 0, 15, 23, 17321 }, // U+20B4 - { 13, 15, 189, 0, 15, 25, 17344 }, // U+20B9 - { 12, 15, 204, 0, 15, 23, 17369 }, // U+2202 - { 15, 15, 231, 0, 15, 29, 17392 }, // U+2206 - { 13, 17, 243, 1, 15, 28, 17421 }, // U+220F - { 11, 17, 181, 0, 15, 24, 17449 }, // U+2211 - { 10, 3, 189, 1, 8, 4, 17473 }, // U+2212 - { 11, 15, 51, -4, 15, 21, 17477 }, // U+2215 - { 5, 4, 82, 0, 9, 3, 17498 }, // U+2219 - { 14, 15, 201, 0, 15, 27, 17501 }, // U+221A - { 13, 7, 212, 0, 10, 12, 17528 }, // U+221E - { 9, 21, 134, 0, 16, 24, 17540 }, // U+222B - { 12, 11, 189, 0, 12, 17, 17564 }, // U+2248 - { 10, 14, 189, 1, 14, 18, 17581 }, // U+2260 - { 10, 13, 189, 1, 13, 17, 17599 }, // U+2264 - { 10, 13, 189, 1, 13, 17, 17616 }, // U+2265 - { 17, 16, 280, 1, 16, 34, 17633 }, // U+FB00 - { 13, 16, 236, 1, 16, 26, 17667 }, // U+FB01 - { 15, 16, 245, 1, 16, 30, 17693 }, // U+FB02 - { 22, 16, 376, 1, 16, 44, 17723 }, // U+FB03 - { 23, 16, 385, 1, 16, 46, 17767 }, // U+FB04 + { 15, 20, 240, 0, 15, 38, 16785 }, // U+1EA0 + { 11, 17, 184, 0, 12, 24, 16823 }, // U+1EA1 + { 15, 20, 240, 0, 20, 38, 16847 }, // U+1EA2 + { 11, 18, 184, 0, 17, 25, 16885 }, // U+1EA3 + { 15, 23, 240, 0, 23, 44, 16910 }, // U+1EA4 + { 13, 21, 184, 0, 20, 35, 16954 }, // U+1EA5 + { 15, 23, 240, 0, 23, 44, 16989 }, // U+1EA6 + { 11, 21, 184, 0, 20, 29, 17033 }, // U+1EA7 + { 15, 24, 240, 0, 24, 45, 17062 }, // U+1EA8 + { 12, 21, 184, 0, 20, 32, 17107 }, // U+1EA9 + { 15, 24, 240, 0, 24, 45, 17139 }, // U+1EAA + { 11, 21, 184, 0, 20, 29, 17184 }, // U+1EAB + { 15, 25, 240, 0, 20, 47, 17213 }, // U+1EAC + { 11, 22, 184, 0, 17, 31, 17260 }, // U+1EAD + { 15, 24, 240, 0, 24, 45, 17291 }, // U+1EAE + { 11, 22, 184, 0, 21, 31, 17336 }, // U+1EAF + { 15, 24, 240, 0, 24, 45, 17367 }, // U+1EB0 + { 11, 22, 184, 0, 21, 31, 17412 }, // U+1EB1 + { 15, 25, 240, 0, 25, 47, 17443 }, // U+1EB2 + { 11, 22, 184, 0, 21, 31, 17490 }, // U+1EB3 + { 15, 24, 240, 0, 24, 45, 17521 }, // U+1EB4 + { 11, 21, 184, 0, 20, 29, 17566 }, // U+1EB5 + { 15, 25, 240, 0, 20, 47, 17595 }, // U+1EB6 + { 11, 21, 184, 0, 16, 29, 17642 }, // U+1EB7 + { 11, 20, 202, 1, 15, 28, 17671 }, // U+1EB8 + { 12, 17, 195, 0, 12, 26, 17699 }, // U+1EB9 + { 11, 20, 202, 1, 20, 28, 17725 }, // U+1EBA + { 12, 18, 195, 0, 17, 27, 17753 }, // U+1EBB + { 11, 20, 202, 1, 20, 28, 17780 }, // U+1EBC + { 12, 17, 195, 0, 16, 26, 17808 }, // U+1EBD + { 13, 23, 202, 1, 23, 38, 17834 }, // U+1EBE + { 13, 20, 195, 0, 19, 33, 17872 }, // U+1EBF + { 11, 23, 202, 1, 23, 32, 17905 }, // U+1EC0 + { 12, 21, 195, 0, 20, 32, 17937 }, // U+1EC1 + { 12, 23, 202, 1, 23, 35, 17969 }, // U+1EC2 + { 13, 21, 195, 0, 20, 35, 18004 }, // U+1EC3 + { 11, 24, 202, 1, 24, 33, 18039 }, // U+1EC4 + { 12, 21, 195, 0, 20, 32, 18072 }, // U+1EC5 + { 11, 25, 202, 1, 20, 35, 18104 }, // U+1EC6 + { 12, 22, 195, 0, 17, 33, 18139 }, // U+1EC7 + { 6, 20, 105, 0, 20, 15, 18172 }, // U+1EC8 + { 6, 17, 96, 0, 17, 13, 18187 }, // U+1EC9 + { 4, 20, 105, 1, 15, 10, 18200 }, // U+1ECA + { 4, 21, 96, 1, 16, 11, 18210 }, // U+1ECB + { 15, 20, 263, 1, 15, 38, 18221 }, // U+1ECC + { 12, 17, 202, 0, 12, 26, 18259 }, // U+1ECD + { 15, 21, 263, 1, 20, 40, 18285 }, // U+1ECE + { 12, 18, 202, 0, 17, 27, 18325 }, // U+1ECF + { 15, 24, 263, 1, 23, 45, 18352 }, // U+1ED0 + { 13, 21, 202, 0, 20, 35, 18397 }, // U+1ED1 + { 15, 24, 263, 1, 23, 45, 18432 }, // U+1ED2 + { 12, 21, 202, 0, 20, 32, 18477 }, // U+1ED3 + { 15, 25, 263, 1, 24, 47, 18509 }, // U+1ED4 + { 13, 21, 202, 0, 20, 35, 18556 }, // U+1ED5 + { 15, 25, 263, 1, 24, 47, 18591 }, // U+1ED6 + { 12, 21, 202, 0, 20, 32, 18638 }, // U+1ED7 + { 15, 25, 263, 1, 20, 47, 18670 }, // U+1ED8 + { 12, 22, 202, 0, 17, 33, 18717 }, // U+1ED9 + { 15, 21, 263, 1, 20, 40, 18750 }, // U+1EDA + { 13, 18, 202, 0, 17, 30, 18790 }, // U+1EDB + { 15, 21, 263, 1, 20, 40, 18820 }, // U+1EDC + { 13, 18, 202, 0, 17, 30, 18860 }, // U+1EDD + { 15, 21, 263, 1, 20, 40, 18890 }, // U+1EDE + { 13, 18, 202, 0, 17, 30, 18930 }, // U+1EDF + { 15, 21, 263, 1, 20, 40, 18960 }, // U+1EE0 + { 13, 17, 202, 0, 16, 28, 19000 }, // U+1EE1 + { 15, 22, 263, 1, 17, 42, 19028 }, // U+1EE2 + { 13, 19, 202, 0, 14, 31, 19070 }, // U+1EE3 + { 13, 20, 236, 1, 15, 33, 19101 }, // U+1EE4 + { 10, 16, 196, 1, 11, 20, 19134 }, // U+1EE5 + { 13, 21, 236, 1, 20, 35, 19154 }, // U+1EE6 + { 10, 18, 196, 1, 17, 23, 19189 }, // U+1EE7 + { 15, 21, 249, 1, 20, 40, 19212 }, // U+1EE8 + { 13, 18, 209, 1, 17, 30, 19252 }, // U+1EE9 + { 15, 21, 249, 1, 20, 40, 19282 }, // U+1EEA + { 13, 18, 209, 1, 17, 30, 19322 }, // U+1EEB + { 15, 21, 249, 1, 20, 40, 19352 }, // U+1EEC + { 13, 18, 209, 1, 17, 30, 19392 }, // U+1EED + { 15, 21, 249, 1, 20, 40, 19422 }, // U+1EEE + { 13, 17, 209, 1, 16, 28, 19462 }, // U+1EEF + { 15, 22, 249, 1, 17, 42, 19490 }, // U+1EF0 + { 13, 19, 209, 1, 14, 31, 19532 }, // U+1EF1 + { 14, 21, 220, 0, 21, 37, 19563 }, // U+1EF2 + { 12, 21, 182, 0, 17, 32, 19600 }, // U+1EF3 + { 14, 20, 220, 0, 15, 35, 19632 }, // U+1EF4 + { 12, 15, 182, 0, 11, 23, 19667 }, // U+1EF5 + { 14, 20, 220, 0, 20, 35, 19690 }, // U+1EF6 + { 12, 21, 182, 0, 17, 32, 19725 }, // U+1EF7 + { 14, 20, 220, 0, 20, 35, 19757 }, // U+1EF8 + { 12, 20, 182, 0, 16, 30, 19792 }, // U+1EF9 + { 2, 16, 0, -1, 15, 4, 19822 }, // U+200C + { 6, 16, 0, -3, 15, 12, 19826 }, // U+200D + { 6, 16, 0, -1, 15, 12, 19838 }, // U+200E + { 6, 16, 0, -5, 15, 12, 19850 }, // U+200F + { 7, 3, 106, 0, 8, 3, 19862 }, // U+2010 + { 11, 3, 167, 0, 8, 5, 19865 }, // U+2013 + { 21, 3, 333, 0, 8, 8, 19870 }, // U+2014 + { 21, 3, 333, 0, 8, 8, 19878 }, // U+2015 + { 5, 6, 81, 0, 16, 4, 19886 }, // U+2018 + { 5, 6, 81, 0, 16, 4, 19890 }, // U+2019 + { 5, 6, 81, 0, 3, 4, 19894 }, // U+201A + { 10, 6, 151, 0, 16, 8, 19898 }, // U+201C + { 9, 6, 151, 0, 16, 7, 19906 }, // U+201D + { 9, 6, 151, 0, 3, 7, 19913 }, // U+201E + { 10, 18, 165, 0, 15, 23, 19920 }, // U+2020 + { 10, 18, 165, 0, 15, 23, 19943 }, // U+2021 + { 7, 6, 121, 0, 10, 6, 19966 }, // U+2022 + { 19, 4, 333, 1, 4, 10, 19972 }, // U+2026 + { 27, 15, 440, 0, 15, 51, 19982 }, // U+2030 + { 7, 11, 109, 0, 11, 10, 20033 }, // U+2039 + { 7, 11, 109, 0, 11, 10, 20043 }, // U+203A + { 11, 15, 51, -4, 15, 21, 20053 }, // U+2044 + { 8, 9, 121, 0, 15, 9, 20074 }, // U+2070 + { 8, 8, 121, 0, 15, 8, 20083 }, // U+2074 + { 7, 9, 121, 0, 15, 8, 20091 }, // U+2075 + { 8, 9, 121, 0, 15, 9, 20099 }, // U+2076 + { 8, 8, 121, 0, 15, 8, 20108 }, // U+2077 + { 8, 9, 121, 0, 15, 9, 20116 }, // U+2078 + { 8, 9, 121, 0, 15, 9, 20125 }, // U+2079 + { 8, 9, 121, 0, 9, 9, 20134 }, // U+2080 + { 6, 9, 121, 0, 9, 7, 20143 }, // U+2081 + { 7, 9, 121, 0, 9, 8, 20150 }, // U+2082 + { 7, 9, 121, 0, 9, 8, 20158 }, // U+2083 + { 8, 8, 121, 0, 9, 8, 20166 }, // U+2084 + { 7, 9, 121, 0, 9, 8, 20174 }, // U+2085 + { 8, 9, 121, 0, 9, 9, 20182 }, // U+2086 + { 8, 8, 121, 0, 9, 8, 20191 }, // U+2087 + { 8, 9, 121, 0, 9, 9, 20199 }, // U+2088 + { 8, 9, 121, 0, 9, 9, 20208 }, // U+2089 + { 16, 13, 288, 1, 13, 26, 20217 }, // U+20AA + { 12, 15, 189, 0, 15, 23, 20243 }, // U+20AC + { 12, 15, 189, 0, 15, 23, 20266 }, // U+20AE + { 12, 15, 189, 0, 15, 23, 20289 }, // U+20B4 + { 13, 15, 189, 0, 15, 25, 20312 }, // U+20B9 + { 12, 15, 204, 0, 15, 23, 20337 }, // U+2202 + { 15, 15, 231, 0, 15, 29, 20360 }, // U+2206 + { 13, 17, 243, 1, 15, 28, 20389 }, // U+220F + { 11, 17, 181, 0, 15, 24, 20417 }, // U+2211 + { 10, 3, 189, 1, 8, 4, 20441 }, // U+2212 + { 11, 15, 51, -4, 15, 21, 20445 }, // U+2215 + { 5, 4, 82, 0, 9, 3, 20466 }, // U+2219 + { 14, 15, 201, 0, 15, 27, 20469 }, // U+221A + { 13, 7, 212, 0, 10, 12, 20496 }, // U+221E + { 9, 21, 134, 0, 16, 24, 20508 }, // U+222B + { 12, 11, 189, 0, 12, 17, 20532 }, // U+2248 + { 10, 14, 189, 1, 14, 18, 20549 }, // U+2260 + { 10, 13, 189, 1, 13, 17, 20567 }, // U+2264 + { 10, 13, 189, 1, 13, 17, 20584 }, // U+2265 + { 17, 16, 280, 1, 16, 34, 20601 }, // U+FB00 + { 13, 16, 236, 1, 16, 26, 20635 }, // U+FB01 + { 15, 16, 245, 1, 16, 30, 20661 }, // U+FB02 + { 22, 16, 376, 1, 16, 44, 20691 }, // U+FB03 + { 23, 16, 385, 1, 16, 46, 20735 }, // U+FB04 }; static const EpdUnicodeInterval ubuntu_10_boldIntervals[] = { @@ -1892,36 +2165,36 @@ static const EpdUnicodeInterval ubuntu_10_boldIntervals[] = { { 0x472, 0x475, 0x216 }, { 0x48A, 0x4F9, 0x21A }, { 0x5D0, 0x5EA, 0x28A }, - { 0x1EF2, 0x1EF3, 0x2A5 }, - { 0x200C, 0x2010, 0x2A7 }, - { 0x2013, 0x2015, 0x2AC }, - { 0x2018, 0x201A, 0x2AF }, - { 0x201C, 0x201E, 0x2B2 }, - { 0x2020, 0x2022, 0x2B5 }, - { 0x2026, 0x2026, 0x2B8 }, - { 0x2030, 0x2030, 0x2B9 }, - { 0x2039, 0x203A, 0x2BA }, - { 0x2044, 0x2044, 0x2BC }, - { 0x2070, 0x2070, 0x2BD }, - { 0x2074, 0x2079, 0x2BE }, - { 0x2080, 0x2089, 0x2C4 }, - { 0x20AA, 0x20AA, 0x2CE }, - { 0x20AC, 0x20AC, 0x2CF }, - { 0x20AE, 0x20AE, 0x2D0 }, - { 0x20B4, 0x20B4, 0x2D1 }, - { 0x20B9, 0x20B9, 0x2D2 }, - { 0x2202, 0x2202, 0x2D3 }, - { 0x2206, 0x2206, 0x2D4 }, - { 0x220F, 0x220F, 0x2D5 }, - { 0x2211, 0x2212, 0x2D6 }, - { 0x2215, 0x2215, 0x2D8 }, - { 0x2219, 0x221A, 0x2D9 }, - { 0x221E, 0x221E, 0x2DB }, - { 0x222B, 0x222B, 0x2DC }, - { 0x2248, 0x2248, 0x2DD }, - { 0x2260, 0x2260, 0x2DE }, - { 0x2264, 0x2265, 0x2DF }, - { 0xFB00, 0xFB04, 0x2E1 }, + { 0x1EA0, 0x1EF9, 0x2A5 }, + { 0x200C, 0x2010, 0x2FF }, + { 0x2013, 0x2015, 0x304 }, + { 0x2018, 0x201A, 0x307 }, + { 0x201C, 0x201E, 0x30A }, + { 0x2020, 0x2022, 0x30D }, + { 0x2026, 0x2026, 0x310 }, + { 0x2030, 0x2030, 0x311 }, + { 0x2039, 0x203A, 0x312 }, + { 0x2044, 0x2044, 0x314 }, + { 0x2070, 0x2070, 0x315 }, + { 0x2074, 0x2079, 0x316 }, + { 0x2080, 0x2089, 0x31C }, + { 0x20AA, 0x20AA, 0x326 }, + { 0x20AC, 0x20AC, 0x327 }, + { 0x20AE, 0x20AE, 0x328 }, + { 0x20B4, 0x20B4, 0x329 }, + { 0x20B9, 0x20B9, 0x32A }, + { 0x2202, 0x2202, 0x32B }, + { 0x2206, 0x2206, 0x32C }, + { 0x220F, 0x220F, 0x32D }, + { 0x2211, 0x2212, 0x32E }, + { 0x2215, 0x2215, 0x330 }, + { 0x2219, 0x221A, 0x331 }, + { 0x221E, 0x221E, 0x333 }, + { 0x222B, 0x222B, 0x334 }, + { 0x2248, 0x2248, 0x335 }, + { 0x2260, 0x2260, 0x336 }, + { 0x2264, 0x2265, 0x337 }, + { 0xFB00, 0xFB04, 0x339 }, }; static const EpdKernClassEntry ubuntu_10_boldKernLeftClasses[] = { diff --git a/lib/EpdFont/builtinFonts/ubuntu_10_regular.h b/lib/EpdFont/builtinFonts/ubuntu_10_regular.h index 5db8c38c..695862c6 100644 --- a/lib/EpdFont/builtinFonts/ubuntu_10_regular.h +++ b/lib/EpdFont/builtinFonts/ubuntu_10_regular.h @@ -3,12 +3,12 @@ * name: ubuntu_10_regular * size: 10 * mode: 1-bit - * Command used: fontconvert.py ubuntu_10_regular 10 ../builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Regular.ttf --additional-intervals 0x05D0,0x05EA + * Command used: fontconvert.py ubuntu_10_regular 10 ../builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Regular.ttf ../builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Regular.ttf --additional-intervals 0x05D0,0x05EA */ #pragma once #include "EpdFontData.h" -static const uint8_t ubuntu_10_regularBitmaps[16030] = { +static const uint8_t ubuntu_10_regularBitmaps[18686] = { 0xEE, 0xEE, 0xE6, 0x66, 0x66, 0x00, 0xEF, 0xE0, 0xEF, 0xDF, 0xBF, 0x6E, 0xC0, 0x1C, 0x61, 0xCE, 0x1C, 0xE1, 0x8E, 0xFF, 0xFF, 0xFF, 0x38, 0xC3, 0x9C, 0x31, 0xCF, 0xFF, 0xFF, 0xF7, 0x18, 0x73, 0x87, 0x38, 0x63, 0x80, 0x0C, 0x03, 0x03, 0xF9, 0xFE, 0xF1, 0xB8, 0x0E, 0x01, 0xE0, 0x7E, 0x07, @@ -953,11 +953,177 @@ static const uint8_t ubuntu_10_regularBitmaps[16030] = { 0x1F, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0xE7, 0x1F, 0x38, 0xF9, 0xC7, 0xCE, 0x3E, 0xE1, 0xFF, 0x0F, 0xF0, 0xFC, 0x07, 0x60, 0x3B, 0x83, 0x8F, 0xF8, 0x3F, 0x80, 0x7F, 0xF3, 0xFF, 0xC6, 0x0E, 0x30, 0x71, 0x83, 0x8C, 0x1C, 0x60, 0xE3, 0x07, 0x18, - 0x38, 0xC1, 0xDE, 0x0F, 0xE0, 0x70, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x06, 0x00, 0x00, 0x70, 0x1D, - 0xC1, 0xCE, 0x1C, 0x38, 0xE1, 0xCE, 0x07, 0x70, 0x3F, 0x00, 0xF8, 0x03, 0x80, 0x1C, 0x00, 0xE0, - 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x18, 0x03, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0x38, - 0x37, 0x0E, 0x71, 0xCE, 0x31, 0xC6, 0x1D, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, 0x01, 0xC0, - 0x70, 0x7E, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0xE3, 0x1E, 0x78, 0xC3, 0x0C, 0x30, 0xC3, + 0x38, 0xC1, 0xDE, 0x0F, 0xE0, 0x70, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0F, 0xC0, 0x73, + 0x01, 0xCE, 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1F, 0xFE, 0x70, 0x3B, 0x80, 0x6E, 0x01, + 0xC0, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x00, 0x0F, 0xC3, 0xF8, 0x06, 0x01, 0xC7, 0xF7, + 0xFD, 0xC7, 0x61, 0xD8, 0x77, 0xFC, 0xFF, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x02, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xE0, 0x03, 0x00, 0x0C, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0xC0, 0x3F, 0x01, 0xCC, 0x07, + 0x38, 0x18, 0xE0, 0xE1, 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0xF9, 0xC0, 0xEE, 0x01, 0xB8, 0x07, 0x1E, + 0x07, 0xC0, 0x70, 0x38, 0x04, 0x0F, 0xC3, 0xF8, 0x06, 0x01, 0xC7, 0xF7, 0xFD, 0xC7, 0x61, 0xD8, + 0x77, 0xFC, 0xFF, 0x0E, 0x00, 0x00, 0x10, 0x00, 0xE0, 0x07, 0x80, 0xDC, 0x07, 0xC0, 0x3F, 0x00, + 0xCC, 0x00, 0xC0, 0x07, 0x80, 0x1E, 0x00, 0xFC, 0x03, 0xF0, 0x1C, 0xC0, 0x73, 0x81, 0x8E, 0x0E, + 0x1C, 0x3F, 0xF1, 0xFF, 0xC7, 0xFF, 0x9C, 0x0E, 0xE0, 0x1B, 0x80, 0x70, 0x00, 0x20, 0x07, 0x00, + 0xE0, 0x5C, 0x0E, 0x81, 0xF0, 0x11, 0x00, 0x00, 0x3F, 0x03, 0xF8, 0x01, 0x80, 0x1C, 0x1F, 0xC7, + 0xFC, 0x71, 0xC6, 0x1C, 0x61, 0xC7, 0xFC, 0x3F, 0xC0, 0xE0, 0x00, 0x80, 0x07, 0x00, 0x1E, 0x00, + 0xF8, 0x07, 0xE0, 0x3F, 0x00, 0xCC, 0x00, 0xC0, 0x07, 0x80, 0x1E, 0x00, 0xFC, 0x03, 0xF0, 0x1C, + 0xC0, 0x73, 0x81, 0x8E, 0x0E, 0x1C, 0x3F, 0xF1, 0xFF, 0xC7, 0xFF, 0x9C, 0x0E, 0xE0, 0x1B, 0x80, + 0x70, 0x02, 0x01, 0xC0, 0x38, 0x17, 0x0E, 0x87, 0xC1, 0x10, 0x00, 0x3F, 0x0F, 0xE0, 0x18, 0x07, + 0x1F, 0xDF, 0xF7, 0x1D, 0x87, 0x61, 0xDF, 0xF3, 0xFC, 0x38, 0x00, 0x00, 0x03, 0xC0, 0x0F, 0x00, + 0x1C, 0x03, 0x60, 0x1E, 0x00, 0xFC, 0x03, 0x30, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0F, + 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1F, 0xFE, 0x70, 0x3B, 0x80, + 0x6E, 0x01, 0xC0, 0x03, 0xC0, 0x7C, 0x03, 0x82, 0xE0, 0xE8, 0x3E, 0x04, 0x40, 0x00, 0x3F, 0x07, + 0xF0, 0x06, 0x00, 0xE1, 0xFC, 0xFF, 0x9C, 0x73, 0x0E, 0x61, 0xCF, 0xF8, 0xFF, 0x07, 0x00, 0x04, + 0x40, 0x3F, 0x81, 0xFC, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x00, 0xFC, 0x03, 0x30, 0x03, 0x00, 0x1E, + 0x00, 0x78, 0x03, 0xF0, 0x0F, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, + 0x1F, 0xFE, 0x70, 0x3B, 0x80, 0x6E, 0x01, 0xC0, 0x1D, 0x8F, 0xE3, 0x30, 0x10, 0x0E, 0x07, 0xC1, + 0x10, 0x00, 0x3F, 0x0F, 0xE0, 0x18, 0x07, 0x1F, 0xDF, 0xF7, 0x1D, 0x87, 0x61, 0xDF, 0xF3, 0xFC, + 0x38, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x03, 0xF0, 0x0C, 0xC0, 0x0C, 0x00, 0x78, 0x01, 0xE0, 0x0F, + 0xC0, 0x3F, 0x01, 0xCC, 0x07, 0x38, 0x18, 0xE0, 0xE1, 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0xF9, 0xC0, + 0xEE, 0x01, 0xB8, 0x07, 0x00, 0x00, 0x0C, 0x00, 0x70, 0x00, 0xC0, 0x00, 0x01, 0x00, 0xE0, 0x7C, + 0x11, 0x00, 0x03, 0xF0, 0xFE, 0x01, 0x80, 0x71, 0xFD, 0xFF, 0x71, 0xD8, 0x76, 0x1D, 0xFF, 0x3F, + 0xC3, 0x80, 0xE0, 0x38, 0x0E, 0x00, 0x00, 0x80, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x0D, 0xC0, 0x3F, + 0x00, 0x78, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0F, 0xC0, 0x73, 0x01, 0xCE, + 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1F, 0xFE, 0x70, 0x3B, 0x80, 0x6E, 0x01, 0xC0, 0x01, + 0x00, 0xE0, 0x70, 0x38, 0x35, 0x07, 0xC1, 0xF0, 0x10, 0x00, 0x0F, 0xC3, 0xF8, 0x06, 0x01, 0xC7, + 0xF7, 0xFD, 0xC7, 0x61, 0xD8, 0x77, 0xFC, 0xFF, 0x0E, 0x00, 0x04, 0x00, 0x38, 0x00, 0xF0, 0x00, + 0xC0, 0x0C, 0xC0, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0F, + 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1F, 0xFE, 0x70, 0x3B, 0x80, + 0x6E, 0x01, 0xC0, 0x10, 0x0E, 0x01, 0xC0, 0x38, 0x35, 0x07, 0xC1, 0xF0, 0x10, 0x00, 0x0F, 0xC3, + 0xF8, 0x06, 0x01, 0xC7, 0xF7, 0xFD, 0xC7, 0x61, 0xD8, 0x77, 0xFC, 0xFF, 0x0E, 0x00, 0x07, 0x00, + 0x1E, 0x00, 0x38, 0x00, 0xE0, 0x0F, 0xC0, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x00, + 0x78, 0x03, 0xF0, 0x0F, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1F, + 0xFE, 0x70, 0x3B, 0x80, 0x6E, 0x01, 0xC0, 0x0C, 0x07, 0xC0, 0x70, 0x38, 0x3D, 0x07, 0xC1, 0xF0, + 0x10, 0x00, 0x0F, 0xC3, 0xF8, 0x06, 0x01, 0xC7, 0xF7, 0xFD, 0xC7, 0x61, 0xD8, 0x77, 0xFC, 0xFF, + 0x0E, 0x00, 0x0F, 0x60, 0x7F, 0x00, 0x98, 0x03, 0x30, 0x0F, 0xC0, 0x1E, 0x00, 0x00, 0x00, 0xC0, + 0x07, 0x80, 0x1E, 0x00, 0xFC, 0x03, 0xF0, 0x1C, 0xC0, 0x73, 0x81, 0x8E, 0x0E, 0x1C, 0x3F, 0xF1, + 0xFF, 0xC7, 0xFF, 0x9C, 0x0E, 0xE0, 0x1B, 0x80, 0x70, 0x1D, 0x8F, 0xE3, 0x70, 0xC4, 0x1F, 0x07, + 0xC0, 0x40, 0x00, 0x3F, 0x0F, 0xE0, 0x18, 0x07, 0x1F, 0xDF, 0xF7, 0x1D, 0x87, 0x61, 0xDF, 0xF3, + 0xFC, 0x38, 0x0C, 0xC0, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, + 0x0F, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x38, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1F, 0xFE, 0x70, 0x3B, + 0x80, 0x6E, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x31, 0x0F, 0xC1, 0xF0, 0x10, + 0x00, 0x0F, 0xC3, 0xF8, 0x06, 0x01, 0xC7, 0xF7, 0xFD, 0xC7, 0x61, 0xD8, 0x77, 0xFC, 0xFF, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x7F, 0xDF, 0xFB, 0xFF, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0xE7, 0xFC, 0xFF, + 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xFF, 0xBF, 0xF8, 0x00, 0x0C, 0x03, 0xC0, 0x30, 0x00, 0x00, + 0x0F, 0xC7, 0xFB, 0x8E, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x07, 0xF8, 0xFE, 0x0E, 0x03, + 0x01, 0xC0, 0x30, 0x0C, 0x03, 0xE0, 0x1C, 0x07, 0x00, 0xC0, 0xFF, 0xBF, 0xF7, 0xFE, 0xE0, 0x1C, + 0x03, 0x80, 0x7F, 0xCF, 0xF9, 0xFF, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0x7F, 0xF0, 0x1C, + 0x07, 0x80, 0xE0, 0x30, 0x08, 0x0F, 0xC7, 0xFB, 0x8E, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x38, + 0x07, 0xF8, 0xFE, 0x0E, 0x00, 0x1D, 0x87, 0xF0, 0xCC, 0x00, 0x07, 0xFD, 0xFF, 0xBF, 0xF7, 0x00, + 0xE0, 0x1C, 0x03, 0xFE, 0x7F, 0xCF, 0xF9, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0xFB, 0xFF, 0x80, + 0x11, 0x0F, 0xC7, 0xF0, 0x00, 0x00, 0x0F, 0xC7, 0xFB, 0x8E, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, + 0x38, 0x07, 0xF8, 0xFE, 0x0E, 0x00, 0x00, 0x40, 0x06, 0x00, 0xE0, 0xDC, 0x1F, 0x83, 0xF0, 0x11, + 0x07, 0xFC, 0xFF, 0xCF, 0xFC, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xF8, 0xFF, 0x8F, 0xF8, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xCF, 0xFE, 0x00, 0x40, 0x1C, 0x07, 0x86, 0xE1, 0xF8, 0x7E, 0x0C, + 0xC0, 0x00, 0x3F, 0x0F, 0xF3, 0x8E, 0x70, 0xEF, 0xFD, 0xFF, 0xB8, 0x07, 0x00, 0xE0, 0x0F, 0xF0, + 0xFE, 0x07, 0x00, 0x02, 0x00, 0xE0, 0x1E, 0x07, 0xC1, 0xF8, 0x7E, 0x04, 0x43, 0xFE, 0xFF, 0xDF, + 0xFB, 0x80, 0x70, 0x0E, 0x01, 0xFF, 0x3F, 0xE7, 0xFC, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0xFD, + 0xFF, 0xC0, 0x02, 0x01, 0x80, 0x70, 0x3E, 0x1F, 0x0F, 0xC3, 0x30, 0x00, 0x3F, 0x1F, 0xEE, 0x3B, + 0x87, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xE0, 0x1F, 0xE3, 0xF8, 0x38, 0x03, 0xC0, 0x78, 0x07, 0x06, + 0xE1, 0xE8, 0x7E, 0x04, 0x43, 0xFE, 0xFF, 0xDF, 0xFB, 0x80, 0x70, 0x0E, 0x01, 0xFF, 0x3F, 0xE7, + 0xFC, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0xFD, 0xFF, 0xC0, 0x03, 0xC0, 0x78, 0x07, 0x06, 0xE1, + 0xE8, 0x7E, 0x0C, 0xC0, 0x00, 0x3F, 0x0F, 0xF3, 0x8E, 0x70, 0xEF, 0xFD, 0xFF, 0xB8, 0x07, 0x00, + 0xE0, 0x0F, 0xF0, 0xFE, 0x07, 0x00, 0x19, 0x07, 0xF0, 0xFC, 0x00, 0x00, 0xC0, 0x3C, 0x0F, 0xC0, + 0x88, 0x7F, 0xDF, 0xFB, 0xFF, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0xE7, 0xFC, 0xFF, 0x9C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xFF, 0xBF, 0xF8, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x0C, 0x07, 0x83, 0xF0, 0xCC, + 0x00, 0x0F, 0xC7, 0xFB, 0x8E, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x07, 0xF8, 0xFE, 0x0E, + 0x00, 0x00, 0x01, 0x80, 0x78, 0x1F, 0x81, 0x10, 0xFF, 0xBF, 0xF7, 0xFE, 0xE0, 0x1C, 0x03, 0x80, + 0x7F, 0xCF, 0xF9, 0xFF, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0x7F, 0xF0, 0x00, 0x18, 0x07, + 0x80, 0x60, 0x00, 0x03, 0x01, 0xE0, 0xFC, 0x33, 0x00, 0x03, 0xF1, 0xFE, 0xE3, 0xB8, 0x7F, 0xFF, + 0xFF, 0xE0, 0x38, 0x0E, 0x01, 0xFE, 0x3F, 0x83, 0x80, 0xC0, 0x70, 0x0C, 0x00, 0x23, 0xDE, 0x73, + 0x19, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE0, 0x73, 0xCE, 0x62, 0x39, 0xCE, 0x73, + 0x9C, 0xE7, 0x39, 0xCE, 0x6E, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xE0, 0x6E, 0xE0, 0x5F, 0xA1, + 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF0, 0x0F, 0xC0, 0xFF, 0xC3, 0xCF, 0x9C, 0x0E, 0xE0, 0x1F, 0x80, + 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xDC, 0x0F, 0x78, 0x78, 0xFF, 0xC1, 0xFE, + 0x00, 0xE0, 0x03, 0x00, 0x0E, 0x00, 0x30, 0x00, 0x00, 0x07, 0xE1, 0xFE, 0x78, 0xEE, 0x1D, 0xC1, + 0xB0, 0x3F, 0x07, 0xE1, 0xDC, 0x39, 0xFE, 0x1F, 0x80, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x02, 0x00, + 0x1E, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x3F, 0x03, 0xFF, 0x0F, 0x3E, 0x70, 0x3B, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0x70, 0x3D, 0xE1, 0xE3, 0xFF, 0x07, + 0xF8, 0x03, 0x80, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x7E, 0x1F, 0xE7, 0x8E, 0xE1, 0xDC, + 0x1B, 0x03, 0xF0, 0x7E, 0x1D, 0xC3, 0x9F, 0xE1, 0xF8, 0x0C, 0x00, 0x00, 0x10, 0x00, 0xE0, 0x07, + 0x00, 0xD8, 0x07, 0xC0, 0x3F, 0x00, 0xCC, 0x03, 0xF0, 0x3F, 0xF0, 0xF3, 0xE7, 0x03, 0xB8, 0x07, + 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x77, 0x03, 0xDE, 0x1E, 0x3F, 0xF0, + 0x7F, 0x80, 0x38, 0x00, 0x00, 0x40, 0x1C, 0x03, 0x86, 0xE1, 0xF8, 0x7E, 0x0C, 0xC0, 0x00, 0x3F, + 0x0F, 0xF3, 0xC7, 0x70, 0xEE, 0x0D, 0x81, 0xF8, 0x3F, 0x0E, 0xE1, 0xCF, 0xF0, 0xFC, 0x06, 0x00, + 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0xD8, 0x07, 0x80, 0x3F, 0x00, 0xCC, 0x03, 0xF0, 0x3F, 0xF0, + 0xF3, 0xE7, 0x03, 0xB8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x77, + 0x03, 0xDE, 0x1E, 0x3F, 0xF0, 0x7F, 0x80, 0x38, 0x00, 0x02, 0x00, 0xE0, 0x0E, 0x06, 0xC1, 0xE0, + 0x7E, 0x0C, 0xC0, 0x00, 0x3F, 0x0F, 0xF3, 0xC7, 0x70, 0xEE, 0x0D, 0x81, 0xF8, 0x3F, 0x0E, 0xE1, + 0xCF, 0xF0, 0xFC, 0x06, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0xD8, 0x07, 0x80, 0x3F, 0x00, + 0xCC, 0x03, 0xF0, 0x3F, 0xF0, 0xF3, 0xE7, 0x03, 0xB8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, + 0x07, 0xE0, 0x1F, 0x80, 0x77, 0x03, 0xDE, 0x1E, 0x3F, 0xF0, 0x7F, 0x80, 0x38, 0x00, 0x01, 0x80, + 0x78, 0x03, 0x86, 0xE1, 0xF8, 0x7E, 0x0C, 0xC0, 0x00, 0x3F, 0x0F, 0xF3, 0xC7, 0x70, 0xEE, 0x0D, + 0x81, 0xF8, 0x3F, 0x0E, 0xE1, 0xCF, 0xF0, 0xFC, 0x06, 0x00, 0x0F, 0xE0, 0x3F, 0x00, 0x98, 0x00, + 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xCC, 0x03, 0xF0, 0x3F, 0xF0, 0xF3, 0xE7, 0x03, 0xB8, 0x07, 0xE0, + 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x77, 0x03, 0xDE, 0x1E, 0x3F, 0xF0, 0x7F, + 0x80, 0x38, 0x00, 0x3D, 0x87, 0xE0, 0x98, 0x06, 0x01, 0xE0, 0x7E, 0x0C, 0xC0, 0x00, 0x3F, 0x0F, + 0xF3, 0xC7, 0x70, 0xEE, 0x0D, 0x81, 0xF8, 0x3F, 0x0E, 0xE1, 0xCF, 0xF0, 0xFC, 0x06, 0x00, 0x01, + 0x00, 0x0E, 0x00, 0x7C, 0x03, 0x30, 0x00, 0x00, 0x3F, 0x03, 0xFF, 0x0F, 0x3E, 0x70, 0x3B, 0x80, + 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0x70, 0x3D, 0xE1, 0xE3, 0xFF, + 0x07, 0xF8, 0x03, 0x80, 0x0C, 0x00, 0x38, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x78, 0x1F, 0x83, 0x30, + 0x00, 0x0F, 0xC3, 0xFC, 0xF1, 0xDC, 0x3B, 0x83, 0x60, 0x7E, 0x0F, 0xC3, 0xB8, 0x73, 0xFC, 0x3F, + 0x01, 0x80, 0x30, 0x07, 0x00, 0xC0, 0x00, 0x80, 0x03, 0x80, 0x0E, 0x00, 0x18, 0x60, 0x20, 0xC1, + 0xFB, 0x8F, 0xFF, 0x1E, 0x7C, 0x70, 0x39, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x01, 0xDC, 0x03, + 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C, 0xF0, 0xF0, 0xFF, 0xC0, 0xFF, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x60, 0x06, 0x3F, 0xE7, 0xFE, 0xF1, 0xCE, 0x1C, 0xE0, 0xCC, 0x0E, + 0xE0, 0xEE, 0x1C, 0xE1, 0xC7, 0xF8, 0x3F, 0x00, 0xC0, 0x04, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, + 0x60, 0x10, 0xC1, 0xFB, 0x8F, 0xFF, 0x1E, 0x7C, 0x70, 0x39, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, + 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C, 0xF0, 0xF0, 0xFF, 0xC0, 0xFF, 0x00, 0x38, + 0x00, 0x00, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x60, 0x06, 0x3F, 0xE7, 0xFE, 0xF1, 0xCE, 0x1C, + 0xE0, 0xCC, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC7, 0xF8, 0x3F, 0x00, 0xC0, 0x02, 0x00, 0x0F, 0x00, + 0x06, 0x00, 0x1C, 0x60, 0x30, 0xC1, 0xFB, 0x8F, 0xFF, 0x1E, 0x7C, 0x70, 0x39, 0xC0, 0x3B, 0x80, + 0x77, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C, 0xF0, 0xF0, 0xFF, 0xC0, + 0xFF, 0x00, 0x38, 0x00, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xE6, 0x0C, 0x63, 0xFE, 0x7F, 0xEF, 0x1C, + 0xE1, 0xCE, 0x0C, 0xC0, 0xEE, 0x0E, 0xE1, 0xCE, 0x1C, 0x7F, 0x83, 0xF0, 0x0C, 0x00, 0x06, 0x40, + 0x1F, 0xC0, 0x3F, 0x30, 0x00, 0x60, 0xFD, 0xC7, 0xFF, 0x8F, 0x3E, 0x38, 0x1C, 0xE0, 0x1D, 0xC0, + 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x38, 0x1E, 0x78, 0x78, 0x7F, 0xE0, + 0x7F, 0x80, 0x1C, 0x00, 0x00, 0x03, 0xF8, 0x3F, 0x00, 0x06, 0x00, 0x63, 0xFE, 0x7F, 0xEF, 0x1C, + 0xE1, 0xCE, 0x0C, 0xC0, 0xEE, 0x0E, 0xE1, 0xCE, 0x1C, 0x7F, 0x83, 0xF0, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x18, 0x3F, 0x71, 0xFF, 0xE3, 0xCF, 0x8E, 0x07, 0x38, 0x07, 0x70, 0x0E, 0xE0, 0x1D, 0xC0, + 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x01, 0xCE, 0x07, 0x9E, 0x1E, 0x1F, 0xF8, 0x1F, 0xE0, 0x07, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x63, 0xFE, 0x7F, 0xEF, 0x1C, 0xE1, + 0xCE, 0x0C, 0xC0, 0xEE, 0x0E, 0xE1, 0xCE, 0x1C, 0x7F, 0x83, 0xF0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, + 0xC0, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, + 0xE0, 0x76, 0x07, 0x70, 0xE7, 0xFE, 0x3F, 0xC0, 0x70, 0x06, 0x00, 0x70, 0x06, 0x00, 0xE1, 0xF8, + 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDF, 0xF3, 0xFC, 0x38, 0x0C, 0x07, 0x80, + 0xC0, 0x04, 0x00, 0xF0, 0x03, 0x00, 0x70, 0x06, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, + 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x60, 0x77, 0x0E, 0x7F, 0xE3, 0xFC, 0x07, + 0x00, 0x1C, 0x07, 0x80, 0xE0, 0x30, 0x0C, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, + 0xE1, 0xF8, 0x77, 0xFC, 0xFF, 0x0E, 0x00, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x70, 0x40, + 0xFC, 0x0F, 0xB8, 0x1F, 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x8E, 0x07, 0x1C, + 0x0E, 0x38, 0x1C, 0x70, 0x38, 0x60, 0x70, 0xE1, 0xC1, 0xFF, 0x81, 0xFE, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x18, 0x30, 0x07, 0xE1, 0xFE, 0x1E, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, + 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xC7, 0xFC, 0x3F, 0xC0, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x38, 0x00, + 0x38, 0x70, 0x20, 0xFC, 0x0F, 0xB8, 0x1F, 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, + 0x8E, 0x07, 0x1C, 0x0E, 0x38, 0x1C, 0x70, 0x38, 0x60, 0x70, 0xE1, 0xC1, 0xFF, 0x81, 0xFE, 0x00, + 0x70, 0x00, 0x00, 0x03, 0x80, 0x3C, 0x01, 0xC0, 0x0C, 0x30, 0x07, 0xE1, 0xFE, 0x1E, 0xE1, 0xCE, + 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xC7, 0xFC, 0x3F, 0xC0, 0xE0, 0x04, 0x00, 0x1E, + 0x00, 0x0C, 0x00, 0x38, 0x70, 0x60, 0xFC, 0x0F, 0xB8, 0x1F, 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xE3, + 0x81, 0xC7, 0x03, 0x8E, 0x07, 0x1C, 0x0E, 0x38, 0x1C, 0x70, 0x38, 0x60, 0x70, 0xE1, 0xC1, 0xFF, + 0x81, 0xFE, 0x00, 0x70, 0x00, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0xC3, 0x0C, 0x7E, 0x1F, 0xE1, 0xEE, + 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0x7F, 0xC3, 0xFC, 0x0E, 0x00, 0x0C, + 0xC0, 0x3F, 0x80, 0x7E, 0x38, 0x00, 0x7E, 0x07, 0xDC, 0x0F, 0xB8, 0x1C, 0x70, 0x38, 0xE0, 0x71, + 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x8E, 0x07, 0x1C, 0x0E, 0x38, 0x1C, 0x30, 0x38, 0x70, 0xE0, 0xFF, + 0xC0, 0xFF, 0x00, 0x38, 0x00, 0x01, 0x03, 0xF8, 0x7F, 0x00, 0x03, 0x00, 0x7E, 0x1F, 0xE1, 0xEE, + 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0x7F, 0xC3, 0xFC, 0x0E, 0x00, 0x00, + 0x0E, 0x00, 0x1F, 0x81, 0xF7, 0x03, 0xEE, 0x07, 0x1C, 0x0E, 0x38, 0x1C, 0x70, 0x38, 0xE0, 0x71, + 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x8E, 0x07, 0x0C, 0x0E, 0x1C, 0x38, 0x3F, 0xF0, 0x3F, 0xC0, 0x0E, + 0x00, 0x18, 0x00, 0x38, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7E, 0x1F, 0xE1, 0xEE, 0x1C, + 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0x7F, 0xC3, 0xFC, 0x0E, 0x00, 0xC0, 0x1E, + 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x06, 0x00, 0x00, 0x70, 0x1D, 0xC1, 0xCE, 0x1C, 0x38, + 0xE1, 0xCE, 0x07, 0x70, 0x3F, 0x00, 0xF8, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x18, 0x03, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0x38, 0x37, 0x0E, 0x71, 0xCE, + 0x31, 0xC6, 0x1D, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x7E, 0x0F, 0x80, + 0xE0, 0x37, 0x03, 0x9C, 0x1C, 0xE1, 0xC3, 0x8E, 0x0E, 0xE0, 0x7E, 0x01, 0xF0, 0x0F, 0x00, 0x38, + 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x38, 0x01, 0xC0, 0xE0, + 0xF8, 0x76, 0x1D, 0xC6, 0x71, 0x8C, 0xE3, 0xB8, 0x6C, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x1C, 0xFE, + 0x7F, 0x1C, 0x06, 0x00, 0x78, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x70, 0x1B, 0x81, 0xCE, 0x0E, 0x70, + 0xE1, 0xC7, 0x07, 0x70, 0x3F, 0x00, 0xF8, 0x07, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x1E, 0x07, 0x80, 0xE0, 0x38, 0x0C, 0x38, 0x3E, 0x1D, 0x87, 0x71, 0x9C, 0x63, + 0x38, 0xEE, 0x1B, 0x07, 0xC1, 0xE0, 0x38, 0x0E, 0x07, 0x0F, 0x83, 0xC0, 0x1E, 0xC0, 0xFE, 0x04, + 0xE0, 0x00, 0x0E, 0x03, 0x70, 0x39, 0xC1, 0xCE, 0x1C, 0x38, 0xE0, 0xEE, 0x07, 0xE0, 0x1F, 0x00, + 0xF0, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x00, 0x0F, 0xE3, 0xF0, 0x00, + 0x00, 0x38, 0x3E, 0x1D, 0x87, 0x71, 0x9C, 0x63, 0x38, 0xEE, 0x1B, 0x07, 0xC1, 0xE0, 0x38, 0x0E, + 0x07, 0x0F, 0x83, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0xE3, 0x1E, 0x78, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x00, 0x47, 0xBF, 0xFB, 0x4C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x87, 0xBF, 0x7C, 0xB0, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x00, 0x7F, 0xF7, 0xC0, 0x7F, 0xF7, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFD, 0xFF, @@ -1691,71 +1857,159 @@ static const EpdGlyph ubuntu_10_regularGlyphs[] = { { 10, 12, 174, 0, 12, 15, 15055 }, // U+05E8 { 13, 12, 243, 1, 12, 20, 15070 }, // U+05E9 { 13, 12, 228, 0, 12, 20, 15090 }, // U+05EA - { 13, 20, 199, 0, 20, 33, 15110 }, // U+1EF2 - { 11, 21, 166, 0, 17, 29, 15143 }, // U+1EF3 - { 2, 16, 0, -1, 15, 4, 15172 }, // U+200C - { 6, 16, 0, -3, 15, 12, 15176 }, // U+200D - { 6, 18, 0, -1, 16, 14, 15188 }, // U+200E - { 6, 18, 0, -5, 16, 14, 15202 }, // U+200F - { 6, 3, 107, 0, 8, 3, 15216 }, // U+2010 - { 12, 2, 165, -1, 7, 3, 15219 }, // U+2013 - { 22, 2, 332, -1, 7, 6, 15222 }, // U+2014 - { 22, 2, 332, -1, 7, 6, 15228 }, // U+2015 - { 4, 5, 78, 1, 16, 3, 15234 }, // U+2018 - { 4, 5, 78, 0, 16, 3, 15237 }, // U+2019 - { 4, 5, 78, 0, 2, 3, 15240 }, // U+201A - { 8, 5, 139, 1, 16, 5, 15243 }, // U+201C - { 8, 5, 139, 0, 16, 5, 15248 }, // U+201D - { 8, 5, 139, 0, 2, 5, 15253 }, // U+201E - { 10, 18, 159, 0, 15, 23, 15258 }, // U+2020 - { 10, 18, 159, 0, 15, 23, 15281 }, // U+2021 - { 6, 5, 120, 1, 10, 4, 15304 }, // U+2022 - { 17, 3, 332, 2, 3, 7, 15308 }, // U+2026 - { 24, 15, 409, 1, 15, 45, 15315 }, // U+2030 - { 6, 9, 97, 0, 10, 7, 15360 }, // U+2039 - { 6, 9, 97, 0, 10, 7, 15367 }, // U+203A - { 11, 15, 49, -4, 15, 21, 15374 }, // U+2044 - { 7, 8, 120, 0, 15, 7, 15395 }, // U+2070 - { 8, 8, 120, 0, 15, 8, 15402 }, // U+2074 - { 7, 8, 120, 0, 15, 7, 15410 }, // U+2075 - { 7, 8, 120, 0, 15, 7, 15417 }, // U+2076 - { 7, 8, 120, 0, 15, 7, 15424 }, // U+2077 - { 7, 8, 120, 0, 15, 7, 15431 }, // U+2078 - { 7, 8, 120, 0, 15, 7, 15438 }, // U+2079 - { 7, 8, 120, 0, 8, 7, 15445 }, // U+2080 - { 4, 8, 120, 1, 8, 4, 15452 }, // U+2081 - { 7, 8, 120, 0, 8, 7, 15456 }, // U+2082 - { 7, 8, 120, 0, 8, 7, 15463 }, // U+2083 - { 8, 8, 120, 0, 8, 8, 15470 }, // U+2084 - { 7, 8, 120, 0, 8, 7, 15478 }, // U+2085 - { 7, 8, 120, 0, 8, 7, 15485 }, // U+2086 - { 7, 8, 120, 0, 8, 7, 15492 }, // U+2087 - { 7, 8, 120, 0, 8, 7, 15499 }, // U+2088 - { 7, 8, 120, 0, 8, 7, 15506 }, // U+2089 - { 14, 13, 264, 1, 13, 23, 15513 }, // U+20AA - { 12, 14, 188, 0, 14, 21, 15536 }, // U+20AC - { 12, 15, 188, 0, 15, 23, 15557 }, // U+20AE - { 12, 15, 188, 0, 15, 23, 15580 }, // U+20B4 - { 11, 15, 188, 1, 15, 21, 15603 }, // U+20B9 - { 12, 16, 195, 0, 16, 24, 15624 }, // U+2202 - { 14, 15, 217, 0, 15, 27, 15648 }, // U+2206 - { 12, 17, 232, 1, 15, 26, 15675 }, // U+220F - { 11, 17, 172, 0, 15, 24, 15701 }, // U+2211 - { 10, 2, 188, 1, 7, 3, 15725 }, // U+2212 - { 11, 15, 49, -4, 15, 21, 15728 }, // U+2215 - { 3, 3, 82, 1, 8, 2, 15749 }, // U+2219 - { 13, 17, 188, 0, 16, 28, 15751 }, // U+221A - { 12, 6, 196, 0, 9, 9, 15779 }, // U+221E - { 8, 20, 123, 0, 16, 20, 15788 }, // U+222B - { 11, 8, 188, 0, 10, 11, 15808 }, // U+2248 - { 10, 13, 188, 1, 13, 17, 15819 }, // U+2260 - { 10, 12, 188, 1, 12, 15, 15836 }, // U+2264 - { 10, 12, 188, 1, 12, 15, 15851 }, // U+2265 - { 16, 16, 259, 1, 16, 32, 15866 }, // U+FB00 - { 12, 16, 214, 1, 16, 24, 15898 }, // U+FB01 - { 13, 16, 221, 1, 16, 26, 15922 }, // U+FB02 - { 20, 16, 344, 1, 16, 40, 15948 }, // U+FB03 - { 21, 16, 351, 1, 16, 42, 15988 }, // U+FB04 + { 14, 19, 221, 0, 15, 34, 15110 }, // U+1EA0 + { 10, 16, 174, 0, 12, 20, 15144 }, // U+1EA1 + { 14, 20, 221, 0, 20, 35, 15164 }, // U+1EA2 + { 10, 17, 174, 0, 16, 22, 15199 }, // U+1EA3 + { 14, 22, 221, 0, 22, 39, 15221 }, // U+1EA4 + { 12, 20, 174, 0, 19, 30, 15260 }, // U+1EA5 + { 14, 22, 221, 0, 22, 39, 15290 }, // U+1EA6 + { 10, 20, 174, 0, 19, 25, 15329 }, // U+1EA7 + { 14, 23, 221, 0, 23, 41, 15354 }, // U+1EA8 + { 11, 20, 174, 0, 19, 28, 15395 }, // U+1EA9 + { 14, 23, 221, 0, 23, 41, 15423 }, // U+1EAA + { 10, 20, 174, 0, 19, 25, 15464 }, // U+1EAB + { 14, 24, 221, 0, 20, 42, 15489 }, // U+1EAC + { 10, 21, 174, 0, 17, 27, 15531 }, // U+1EAD + { 14, 23, 221, 0, 23, 41, 15558 }, // U+1EAE + { 10, 21, 174, 0, 20, 27, 15599 }, // U+1EAF + { 14, 23, 221, 0, 23, 41, 15626 }, // U+1EB0 + { 10, 21, 174, 0, 20, 27, 15667 }, // U+1EB1 + { 14, 23, 221, 0, 23, 41, 15694 }, // U+1EB2 + { 10, 21, 174, 0, 20, 27, 15735 }, // U+1EB3 + { 14, 22, 221, 0, 22, 39, 15762 }, // U+1EB4 + { 10, 20, 174, 0, 19, 25, 15801 }, // U+1EB5 + { 14, 23, 221, 0, 19, 41, 15826 }, // U+1EB6 + { 10, 20, 174, 0, 16, 25, 15867 }, // U+1EB7 + { 11, 19, 190, 1, 15, 27, 15892 }, // U+1EB8 + { 10, 16, 186, 1, 12, 20, 15919 }, // U+1EB9 + { 11, 20, 190, 1, 20, 28, 15939 }, // U+1EBA + { 10, 17, 186, 1, 16, 22, 15967 }, // U+1EBB + { 11, 19, 190, 1, 19, 27, 15989 }, // U+1EBC + { 10, 17, 186, 1, 16, 22, 16016 }, // U+1EBD + { 12, 22, 190, 1, 22, 33, 16038 }, // U+1EBE + { 11, 20, 186, 1, 19, 28, 16071 }, // U+1EBF + { 11, 22, 190, 1, 22, 31, 16099 }, // U+1EC0 + { 10, 20, 186, 1, 19, 25, 16130 }, // U+1EC1 + { 11, 22, 190, 1, 22, 31, 16155 }, // U+1EC2 + { 11, 20, 186, 1, 19, 28, 16186 }, // U+1EC3 + { 11, 23, 190, 1, 23, 32, 16214 }, // U+1EC4 + { 10, 21, 186, 1, 20, 27, 16246 }, // U+1EC5 + { 11, 24, 190, 1, 20, 33, 16273 }, // U+1EC6 + { 10, 21, 186, 1, 17, 27, 16306 }, // U+1EC7 + { 5, 20, 90, 0, 20, 13, 16333 }, // U+1EC8 + { 5, 16, 84, 0, 16, 10, 16346 }, // U+1EC9 + { 4, 19, 90, 1, 15, 10, 16356 }, // U+1ECA + { 3, 20, 84, 1, 16, 8, 16366 }, // U+1ECB + { 14, 19, 259, 1, 15, 34, 16374 }, // U+1ECC + { 11, 16, 197, 1, 12, 22, 16408 }, // U+1ECD + { 14, 21, 259, 1, 20, 37, 16430 }, // U+1ECE + { 11, 17, 197, 1, 16, 24, 16467 }, // U+1ECF + { 14, 23, 259, 1, 22, 41, 16491 }, // U+1ED0 + { 11, 20, 197, 1, 19, 28, 16532 }, // U+1ED1 + { 14, 23, 259, 1, 22, 41, 16560 }, // U+1ED2 + { 11, 20, 197, 1, 19, 28, 16601 }, // U+1ED3 + { 14, 23, 259, 1, 22, 41, 16629 }, // U+1ED4 + { 11, 20, 197, 1, 19, 28, 16670 }, // U+1ED5 + { 14, 23, 259, 1, 22, 41, 16698 }, // U+1ED6 + { 11, 20, 197, 1, 19, 28, 16739 }, // U+1ED7 + { 14, 24, 259, 1, 20, 42, 16767 }, // U+1ED8 + { 11, 21, 197, 1, 17, 29, 16809 }, // U+1ED9 + { 15, 21, 259, 1, 20, 40, 16838 }, // U+1EDA + { 12, 18, 197, 1, 17, 27, 16878 }, // U+1EDB + { 15, 21, 259, 1, 20, 40, 16905 }, // U+1EDC + { 12, 18, 197, 1, 17, 27, 16945 }, // U+1EDD + { 15, 21, 259, 1, 20, 40, 16972 }, // U+1EDE + { 12, 17, 197, 1, 16, 26, 17012 }, // U+1EDF + { 15, 20, 259, 1, 19, 38, 17038 }, // U+1EE0 + { 12, 17, 197, 1, 16, 26, 17076 }, // U+1EE1 + { 15, 21, 259, 1, 17, 40, 17102 }, // U+1EE2 + { 12, 18, 197, 1, 14, 27, 17142 }, // U+1EE3 + { 12, 19, 229, 1, 15, 29, 17169 }, // U+1EE4 + { 10, 15, 191, 1, 11, 19, 17198 }, // U+1EE5 + { 12, 21, 229, 1, 20, 32, 17217 }, // U+1EE6 + { 10, 17, 191, 1, 16, 22, 17249 }, // U+1EE7 + { 15, 21, 237, 1, 20, 40, 17271 }, // U+1EE8 + { 12, 18, 199, 1, 17, 27, 17311 }, // U+1EE9 + { 15, 21, 237, 1, 20, 40, 17338 }, // U+1EEA + { 12, 18, 199, 1, 17, 27, 17378 }, // U+1EEB + { 15, 21, 237, 1, 20, 40, 17405 }, // U+1EEC + { 12, 17, 199, 1, 16, 26, 17445 }, // U+1EED + { 15, 20, 237, 1, 19, 38, 17471 }, // U+1EEE + { 12, 17, 199, 1, 16, 26, 17509 }, // U+1EEF + { 15, 21, 237, 1, 17, 40, 17535 }, // U+1EF0 + { 12, 18, 199, 1, 14, 27, 17575 }, // U+1EF1 + { 13, 20, 199, 0, 20, 33, 17602 }, // U+1EF2 + { 11, 21, 166, 0, 17, 29, 17635 }, // U+1EF3 + { 13, 19, 199, 0, 15, 31, 17664 }, // U+1EF4 + { 10, 15, 166, 0, 11, 19, 17695 }, // U+1EF5 + { 13, 20, 199, 0, 20, 33, 17714 }, // U+1EF6 + { 10, 20, 166, 0, 16, 25, 17747 }, // U+1EF7 + { 13, 19, 199, 0, 19, 31, 17772 }, // U+1EF8 + { 10, 20, 166, 0, 16, 25, 17803 }, // U+1EF9 + { 2, 16, 0, -1, 15, 4, 17828 }, // U+200C + { 6, 16, 0, -3, 15, 12, 17832 }, // U+200D + { 6, 18, 0, -1, 16, 14, 17844 }, // U+200E + { 6, 18, 0, -5, 16, 14, 17858 }, // U+200F + { 6, 3, 107, 0, 8, 3, 17872 }, // U+2010 + { 12, 2, 165, -1, 7, 3, 17875 }, // U+2013 + { 22, 2, 332, -1, 7, 6, 17878 }, // U+2014 + { 22, 2, 332, -1, 7, 6, 17884 }, // U+2015 + { 4, 5, 78, 1, 16, 3, 17890 }, // U+2018 + { 4, 5, 78, 0, 16, 3, 17893 }, // U+2019 + { 4, 5, 78, 0, 2, 3, 17896 }, // U+201A + { 8, 5, 139, 1, 16, 5, 17899 }, // U+201C + { 8, 5, 139, 0, 16, 5, 17904 }, // U+201D + { 8, 5, 139, 0, 2, 5, 17909 }, // U+201E + { 10, 18, 159, 0, 15, 23, 17914 }, // U+2020 + { 10, 18, 159, 0, 15, 23, 17937 }, // U+2021 + { 6, 5, 120, 1, 10, 4, 17960 }, // U+2022 + { 17, 3, 332, 2, 3, 7, 17964 }, // U+2026 + { 24, 15, 409, 1, 15, 45, 17971 }, // U+2030 + { 6, 9, 97, 0, 10, 7, 18016 }, // U+2039 + { 6, 9, 97, 0, 10, 7, 18023 }, // U+203A + { 11, 15, 49, -4, 15, 21, 18030 }, // U+2044 + { 7, 8, 120, 0, 15, 7, 18051 }, // U+2070 + { 8, 8, 120, 0, 15, 8, 18058 }, // U+2074 + { 7, 8, 120, 0, 15, 7, 18066 }, // U+2075 + { 7, 8, 120, 0, 15, 7, 18073 }, // U+2076 + { 7, 8, 120, 0, 15, 7, 18080 }, // U+2077 + { 7, 8, 120, 0, 15, 7, 18087 }, // U+2078 + { 7, 8, 120, 0, 15, 7, 18094 }, // U+2079 + { 7, 8, 120, 0, 8, 7, 18101 }, // U+2080 + { 4, 8, 120, 1, 8, 4, 18108 }, // U+2081 + { 7, 8, 120, 0, 8, 7, 18112 }, // U+2082 + { 7, 8, 120, 0, 8, 7, 18119 }, // U+2083 + { 8, 8, 120, 0, 8, 8, 18126 }, // U+2084 + { 7, 8, 120, 0, 8, 7, 18134 }, // U+2085 + { 7, 8, 120, 0, 8, 7, 18141 }, // U+2086 + { 7, 8, 120, 0, 8, 7, 18148 }, // U+2087 + { 7, 8, 120, 0, 8, 7, 18155 }, // U+2088 + { 7, 8, 120, 0, 8, 7, 18162 }, // U+2089 + { 14, 13, 264, 1, 13, 23, 18169 }, // U+20AA + { 12, 14, 188, 0, 14, 21, 18192 }, // U+20AC + { 12, 15, 188, 0, 15, 23, 18213 }, // U+20AE + { 12, 15, 188, 0, 15, 23, 18236 }, // U+20B4 + { 11, 15, 188, 1, 15, 21, 18259 }, // U+20B9 + { 12, 16, 195, 0, 16, 24, 18280 }, // U+2202 + { 14, 15, 217, 0, 15, 27, 18304 }, // U+2206 + { 12, 17, 232, 1, 15, 26, 18331 }, // U+220F + { 11, 17, 172, 0, 15, 24, 18357 }, // U+2211 + { 10, 2, 188, 1, 7, 3, 18381 }, // U+2212 + { 11, 15, 49, -4, 15, 21, 18384 }, // U+2215 + { 3, 3, 82, 1, 8, 2, 18405 }, // U+2219 + { 13, 17, 188, 0, 16, 28, 18407 }, // U+221A + { 12, 6, 196, 0, 9, 9, 18435 }, // U+221E + { 8, 20, 123, 0, 16, 20, 18444 }, // U+222B + { 11, 8, 188, 0, 10, 11, 18464 }, // U+2248 + { 10, 13, 188, 1, 13, 17, 18475 }, // U+2260 + { 10, 12, 188, 1, 12, 15, 18492 }, // U+2264 + { 10, 12, 188, 1, 12, 15, 18507 }, // U+2265 + { 16, 16, 259, 1, 16, 32, 18522 }, // U+FB00 + { 12, 16, 214, 1, 16, 24, 18554 }, // U+FB01 + { 13, 16, 221, 1, 16, 26, 18578 }, // U+FB02 + { 20, 16, 344, 1, 16, 40, 18604 }, // U+FB03 + { 21, 16, 351, 1, 16, 42, 18644 }, // U+FB04 }; static const EpdUnicodeInterval ubuntu_10_regularIntervals[] = { @@ -1780,36 +2034,36 @@ static const EpdUnicodeInterval ubuntu_10_regularIntervals[] = { { 0x472, 0x475, 0x216 }, { 0x48A, 0x4F9, 0x21A }, { 0x5D0, 0x5EA, 0x28A }, - { 0x1EF2, 0x1EF3, 0x2A5 }, - { 0x200C, 0x2010, 0x2A7 }, - { 0x2013, 0x2015, 0x2AC }, - { 0x2018, 0x201A, 0x2AF }, - { 0x201C, 0x201E, 0x2B2 }, - { 0x2020, 0x2022, 0x2B5 }, - { 0x2026, 0x2026, 0x2B8 }, - { 0x2030, 0x2030, 0x2B9 }, - { 0x2039, 0x203A, 0x2BA }, - { 0x2044, 0x2044, 0x2BC }, - { 0x2070, 0x2070, 0x2BD }, - { 0x2074, 0x2079, 0x2BE }, - { 0x2080, 0x2089, 0x2C4 }, - { 0x20AA, 0x20AA, 0x2CE }, - { 0x20AC, 0x20AC, 0x2CF }, - { 0x20AE, 0x20AE, 0x2D0 }, - { 0x20B4, 0x20B4, 0x2D1 }, - { 0x20B9, 0x20B9, 0x2D2 }, - { 0x2202, 0x2202, 0x2D3 }, - { 0x2206, 0x2206, 0x2D4 }, - { 0x220F, 0x220F, 0x2D5 }, - { 0x2211, 0x2212, 0x2D6 }, - { 0x2215, 0x2215, 0x2D8 }, - { 0x2219, 0x221A, 0x2D9 }, - { 0x221E, 0x221E, 0x2DB }, - { 0x222B, 0x222B, 0x2DC }, - { 0x2248, 0x2248, 0x2DD }, - { 0x2260, 0x2260, 0x2DE }, - { 0x2264, 0x2265, 0x2DF }, - { 0xFB00, 0xFB04, 0x2E1 }, + { 0x1EA0, 0x1EF9, 0x2A5 }, + { 0x200C, 0x2010, 0x2FF }, + { 0x2013, 0x2015, 0x304 }, + { 0x2018, 0x201A, 0x307 }, + { 0x201C, 0x201E, 0x30A }, + { 0x2020, 0x2022, 0x30D }, + { 0x2026, 0x2026, 0x310 }, + { 0x2030, 0x2030, 0x311 }, + { 0x2039, 0x203A, 0x312 }, + { 0x2044, 0x2044, 0x314 }, + { 0x2070, 0x2070, 0x315 }, + { 0x2074, 0x2079, 0x316 }, + { 0x2080, 0x2089, 0x31C }, + { 0x20AA, 0x20AA, 0x326 }, + { 0x20AC, 0x20AC, 0x327 }, + { 0x20AE, 0x20AE, 0x328 }, + { 0x20B4, 0x20B4, 0x329 }, + { 0x20B9, 0x20B9, 0x32A }, + { 0x2202, 0x2202, 0x32B }, + { 0x2206, 0x2206, 0x32C }, + { 0x220F, 0x220F, 0x32D }, + { 0x2211, 0x2212, 0x32E }, + { 0x2215, 0x2215, 0x330 }, + { 0x2219, 0x221A, 0x331 }, + { 0x221E, 0x221E, 0x333 }, + { 0x222B, 0x222B, 0x334 }, + { 0x2248, 0x2248, 0x335 }, + { 0x2260, 0x2260, 0x336 }, + { 0x2264, 0x2265, 0x337 }, + { 0xFB00, 0xFB04, 0x339 }, }; static const EpdKernClassEntry ubuntu_10_regularKernLeftClasses[] = { diff --git a/lib/EpdFont/builtinFonts/ubuntu_12_bold.h b/lib/EpdFont/builtinFonts/ubuntu_12_bold.h index 1801f39d..552dc083 100644 --- a/lib/EpdFont/builtinFonts/ubuntu_12_bold.h +++ b/lib/EpdFont/builtinFonts/ubuntu_12_bold.h @@ -3,12 +3,12 @@ * name: ubuntu_12_bold * size: 12 * mode: 1-bit - * Command used: fontconvert.py ubuntu_12_bold 12 ../builtinFonts/source/Ubuntu/Ubuntu-Bold.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Bold.ttf --additional-intervals 0x05D0,0x05EA + * Command used: fontconvert.py ubuntu_12_bold 12 ../builtinFonts/source/Ubuntu/Ubuntu-Bold.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Bold.ttf ../builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Bold.ttf --additional-intervals 0x05D0,0x05EA */ #pragma once #include "EpdFontData.h" -static const uint8_t ubuntu_12_boldBitmaps[24201] = { +static const uint8_t ubuntu_12_boldBitmaps[28333] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDC, 0x07, 0x7F, 0xFF, 0x70, 0xF7, 0xFD, 0xFF, 0x7F, 0xDF, 0xF3, 0xFC, 0xEF, 0x38, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0x3C, 0xF0, @@ -1433,95 +1433,353 @@ static const uint8_t ubuntu_12_boldBitmaps[24201] = { 0x7F, 0xFE, 0x1E, 0xFF, 0x07, 0x9E, 0x03, 0xE7, 0xC0, 0xF9, 0xFF, 0xFC, 0x3F, 0xFF, 0x07, 0xFF, 0x80, 0x7F, 0x80, 0x7F, 0xFC, 0x3F, 0xFF, 0x9F, 0xFF, 0xC7, 0xFF, 0xF1, 0xF0, 0xF8, 0xF8, 0x7C, 0x7C, 0x3E, 0x3E, 0x1F, 0x1F, 0x0F, 0x8F, 0x87, 0xC7, 0xC3, 0xE7, 0xE1, 0xF7, 0xE0, 0xFB, 0xF0, - 0x7D, 0xF0, 0x3E, 0x03, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x06, 0x00, - 0x00, 0x01, 0xF0, 0x3F, 0x7C, 0x1F, 0x3E, 0x1F, 0x0F, 0x8F, 0x87, 0xCF, 0x81, 0xF7, 0xC0, 0xFF, - 0xC0, 0x3F, 0xE0, 0x0F, 0xE0, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x0C, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x0C, - 0x00, 0x00, 0x3E, 0x1F, 0xF8, 0x79, 0xE1, 0xE7, 0xCF, 0x9F, 0x3C, 0x3C, 0xF0, 0xFF, 0xC3, 0xFE, - 0x07, 0xF8, 0x1F, 0xE0, 0x3F, 0x00, 0xFC, 0x01, 0xE0, 0x0F, 0x81, 0x7C, 0x0F, 0xF0, 0x3F, 0x80, - 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x37, 0x8C, 0x7B, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, - 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x00, 0x00, 0x30, 0x37, 0xEC, 0xDB, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x00, 0x00, 0x61, 0x83, 0xF6, 0x66, 0xC1, 0x83, 0x06, 0x0C, - 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFD, 0xEF, 0x7B, 0xC0, 0x79, 0xE7, 0x9E, 0x7B, 0xCF, 0x00, 0x79, - 0xE7, 0x9E, 0x7B, 0xCF, 0x00, 0x79, 0xDE, 0xFF, 0x3F, 0xDE, 0xF7, 0xBD, 0xEF, 0x78, 0x7B, 0xEF, - 0x7D, 0xEF, 0xBD, 0xE7, 0xBD, 0xE7, 0xBC, 0xE0, 0x7B, 0xEF, 0x7D, 0xEF, 0xBD, 0xE7, 0xBD, 0xE7, - 0xBC, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x70, - 0x07, 0x00, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x70, - 0x07, 0x00, 0x3E, 0x3F, 0x9F, 0xCF, 0xE7, 0xF3, 0xF8, 0xF8, 0x78, 0x38, 0x3D, 0xF0, 0xF8, 0x7F, - 0xE1, 0xF0, 0xFF, 0xC3, 0xE1, 0xF7, 0x83, 0x83, 0xC0, 0x3F, 0x03, 0xC0, 0x00, 0x3F, 0xC3, 0xE0, - 0x00, 0x1E, 0xF1, 0xE0, 0x00, 0x0E, 0x79, 0xE0, 0x00, 0x07, 0x1C, 0xF0, 0x00, 0x03, 0x9E, 0xF0, - 0x00, 0x01, 0xEF, 0xF8, 0x00, 0x00, 0xFF, 0x78, 0x00, 0x00, 0x3F, 0x7D, 0xF8, 0x7E, 0x00, 0x3D, - 0xFE, 0x7F, 0x80, 0x3D, 0xEF, 0x7B, 0xC0, 0x1E, 0xF3, 0xBC, 0xE0, 0x1E, 0x71, 0xDC, 0x70, 0x1F, - 0x3C, 0xEF, 0x38, 0x0F, 0x1E, 0xF7, 0xBC, 0x0F, 0x87, 0xF9, 0xFE, 0x07, 0x81, 0xF8, 0x7E, 0x00, - 0x00, 0x0E, 0x1F, 0x3E, 0x7C, 0x7C, 0xF8, 0x7C, 0x7C, 0x3E, 0x1F, 0x0E, 0x08, 0x10, 0x78, 0x78, - 0x7C, 0x3E, 0x3E, 0x1F, 0x3E, 0x3E, 0x7C, 0x78, 0x78, 0x10, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x80, + 0x7D, 0xF0, 0x3E, 0x01, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x01, 0xFE, + 0x00, 0xFF, 0xC0, 0x3C, 0xF0, 0x1F, 0x3E, 0x07, 0x8F, 0x81, 0xE1, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, + 0x1F, 0xFF, 0xE7, 0xFF, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xF0, 0x00, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x0F, 0xFC, 0x7F, 0xE0, + 0x0F, 0x01, 0x7C, 0xFF, 0xEF, 0xFF, 0x7F, 0xFB, 0xC7, 0xDE, 0x3E, 0xFF, 0xF7, 0xFF, 0x9F, 0xFC, + 0x1E, 0x00, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x3F, + 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x1E, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x01, 0xFE, + 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x0F, 0xFC, 0x03, 0xCF, 0x01, 0xF3, 0xE0, 0x78, 0xF8, 0x1E, 0x1E, + 0x0F, 0xFF, 0xC3, 0xFF, 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x9F, 0x03, 0xEF, 0x80, 0x7F, 0xE0, 0x1F, + 0x0F, 0x80, 0x7E, 0x03, 0xF0, 0x07, 0x80, 0x78, 0x03, 0x80, 0x7E, 0x07, 0xFC, 0x3F, 0xF1, 0xFF, + 0x80, 0x3C, 0x05, 0xF3, 0xFF, 0xBF, 0xFD, 0xFF, 0xEF, 0x1F, 0x78, 0xFB, 0xFF, 0xDF, 0xFE, 0x7F, + 0xF0, 0x78, 0x00, 0x00, 0x03, 0x00, 0x01, 0xE0, 0x00, 0xF8, 0x03, 0x7C, 0x01, 0xFE, 0x00, 0xFF, + 0x00, 0x7F, 0x80, 0x1C, 0xE0, 0x02, 0x10, 0x00, 0x78, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x07, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF0, 0x0F, 0x3C, 0x07, 0xCF, 0x81, 0xE3, 0xE0, 0x78, 0x78, + 0x3F, 0xFF, 0x0F, 0xFF, 0xC7, 0xFF, 0xF9, 0xFF, 0xFE, 0x7C, 0x0F, 0xBE, 0x01, 0xFF, 0x80, 0x7C, + 0x00, 0x08, 0x00, 0x3C, 0x00, 0xF8, 0x13, 0xE0, 0x77, 0x81, 0xF4, 0x07, 0xF0, 0x0E, 0xE0, 0x08, + 0xC0, 0x3F, 0x00, 0xFF, 0x81, 0xFF, 0x83, 0xFF, 0x00, 0x1E, 0x00, 0xBE, 0x1F, 0xFC, 0x7F, 0xF8, + 0xFF, 0xF1, 0xE3, 0xE3, 0xC7, 0xC7, 0xFF, 0x8F, 0xFF, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x00, + 0x0C, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0xE0, 0x07, + 0x38, 0x00, 0x84, 0x00, 0x1E, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x1F, + 0xE0, 0x0F, 0xFC, 0x03, 0xCF, 0x01, 0xF3, 0xE0, 0x78, 0xF8, 0x1E, 0x1E, 0x0F, 0xFF, 0xC3, 0xFF, + 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x9F, 0x03, 0xEF, 0x80, 0x7F, 0xE0, 0x1F, 0x00, 0x00, 0x06, 0x00, + 0x78, 0x03, 0xE0, 0x2F, 0x83, 0xBC, 0x3E, 0x43, 0xF8, 0x1D, 0xC0, 0x46, 0x07, 0xE0, 0x7F, 0xC3, + 0xFF, 0x1F, 0xF8, 0x03, 0xC0, 0x5F, 0x3F, 0xFB, 0xFF, 0xDF, 0xFE, 0xF1, 0xF7, 0x8F, 0xBF, 0xFD, + 0xFF, 0xE7, 0xFF, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0xDE, + 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0xE0, 0x07, 0x38, 0x00, 0x84, 0x00, 0x1E, 0x00, 0x0F, 0xC0, + 0x03, 0xF0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x0F, 0xFC, 0x03, 0xCF, 0x01, 0xF3, 0xE0, + 0x78, 0xF8, 0x1E, 0x1E, 0x0F, 0xFF, 0xC3, 0xFF, 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x9F, 0x03, 0xEF, + 0x80, 0x7F, 0xE0, 0x1F, 0x00, 0x60, 0x03, 0xF0, 0x0F, 0xC0, 0x07, 0x02, 0x3C, 0x1D, 0xE0, 0xFF, + 0x07, 0xF0, 0x1D, 0xC0, 0x23, 0x01, 0xF8, 0x0F, 0xF8, 0x3F, 0xF0, 0xFF, 0xC0, 0x0F, 0x00, 0xBE, + 0x3F, 0xF9, 0xFF, 0xE7, 0xFF, 0x9E, 0x3E, 0x78, 0xF9, 0xFF, 0xE7, 0xFF, 0x8F, 0xFE, 0x07, 0x80, + 0x00, 0x00, 0x01, 0xF6, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x06, 0x70, 0x00, 0x30, 0x00, 0x1E, 0x00, + 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x21, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, + 0x7F, 0x80, 0x1F, 0xE0, 0x07, 0xF8, 0x03, 0xFF, 0x00, 0xF3, 0xC0, 0x7C, 0xF8, 0x1E, 0x3E, 0x07, + 0x87, 0x83, 0xFF, 0xF0, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xE7, 0xC0, 0xFB, 0xE0, 0x1F, 0xF8, + 0x07, 0xC0, 0x1E, 0x61, 0xFF, 0x0F, 0xF8, 0x77, 0x80, 0x20, 0x03, 0x80, 0x3E, 0x03, 0xF8, 0x1D, + 0xC0, 0x46, 0x07, 0xE0, 0x7F, 0xC3, 0xFF, 0x1F, 0xF8, 0x03, 0xC0, 0x5F, 0x3F, 0xFB, 0xFF, 0xDF, + 0xFE, 0xF1, 0xF7, 0x8F, 0xBF, 0xFD, 0xFF, 0xE7, 0xFF, 0x07, 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, + 0x3F, 0x00, 0x1F, 0xE0, 0x07, 0x38, 0x00, 0x84, 0x00, 0x1E, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x01, + 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x0F, 0xFC, 0x03, 0xCF, 0x01, 0xF3, 0xE0, 0x78, 0xF8, 0x1E, + 0x1E, 0x0F, 0xFF, 0xC3, 0xFF, 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x9F, 0x03, 0xEF, 0x80, 0x7F, 0xE0, + 0x1F, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x38, 0x03, 0xE0, 0x3F, 0x81, 0xDC, 0x04, 0x60, 0x7E, 0x07, 0xFC, 0x3F, 0xF1, 0xFF, 0x80, + 0x3C, 0x05, 0xF3, 0xFF, 0xBF, 0xFD, 0xFF, 0xEF, 0x1F, 0x78, 0xFB, 0xFF, 0xDF, 0xFE, 0x7F, 0xF0, + 0x78, 0x03, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x07, + 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x38, 0x00, 0x77, 0xC0, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, + 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x07, 0xF8, + 0x03, 0xFF, 0x00, 0xF3, 0xC0, 0x7C, 0xF8, 0x1E, 0x3E, 0x07, 0x87, 0x83, 0xFF, 0xF0, 0xFF, 0xFC, + 0x7F, 0xFF, 0x9F, 0xFF, 0xE7, 0xC0, 0xFB, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x00, 0xC0, 0x0F, 0x00, + 0x78, 0x07, 0x80, 0x78, 0x01, 0x80, 0x73, 0x83, 0xFC, 0x1F, 0xE0, 0x7E, 0x00, 0x00, 0x3F, 0x03, + 0xFE, 0x1F, 0xF8, 0xFF, 0xC0, 0x1E, 0x02, 0xF9, 0xFF, 0xDF, 0xFE, 0xFF, 0xF7, 0x8F, 0xBC, 0x7D, + 0xFF, 0xEF, 0xFF, 0x3F, 0xF8, 0x3C, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x38, 0x00, 0x77, 0xC0, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x0C, 0x00, + 0x07, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x07, 0xF8, 0x03, 0xFF, 0x00, + 0xF3, 0xC0, 0x7C, 0xF8, 0x1E, 0x3E, 0x07, 0x87, 0x83, 0xFF, 0xF0, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, + 0xFF, 0xE7, 0xC0, 0xFB, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x60, 0x07, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xC0, 0x73, 0x83, 0xFC, 0x1F, 0xE0, 0x7E, 0x00, 0x00, 0x3F, 0x03, 0xFE, 0x1F, 0xF8, + 0xFF, 0xC0, 0x1E, 0x02, 0xF9, 0xFF, 0xDF, 0xFE, 0xFF, 0xF7, 0x8F, 0xBC, 0x7D, 0xFF, 0xEF, 0xFF, + 0x3F, 0xF8, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, + 0x38, 0x00, 0x0C, 0x00, 0x1C, 0xF0, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x3F, 0x00, 0x03, 0x00, 0x01, + 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0xFF, 0xC0, 0x3C, + 0xF0, 0x1F, 0x3E, 0x07, 0x8F, 0x81, 0xE1, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x1F, 0xFF, 0xE7, 0xFF, + 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0x80, 0x3C, + 0x03, 0xC0, 0x1C, 0x03, 0x9C, 0x1F, 0xE0, 0xFF, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x1F, 0xF0, 0xFF, + 0xC7, 0xFE, 0x00, 0xF0, 0x17, 0xCF, 0xFE, 0xFF, 0xF7, 0xFF, 0xBC, 0x7D, 0xE3, 0xEF, 0xFF, 0x7F, + 0xF9, 0xFF, 0xC1, 0xE0, 0x03, 0x98, 0x01, 0xFF, 0x00, 0xFF, 0xC0, 0x1F, 0xE0, 0x00, 0x00, 0x01, + 0xCF, 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x03, 0xF0, 0x00, 0x30, 0x00, 0x1E, 0x00, 0x0F, 0xC0, 0x03, + 0xF0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xE0, 0x0F, 0xFC, 0x03, 0xCF, 0x01, 0xF3, 0xE0, 0x78, + 0xF8, 0x1E, 0x1E, 0x0F, 0xFF, 0xC3, 0xFF, 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x9F, 0x03, 0xEF, 0x80, + 0x7F, 0xE0, 0x1F, 0x0E, 0x60, 0xFF, 0x8F, 0xF8, 0x37, 0x80, 0x00, 0x0E, 0x70, 0x7F, 0x83, 0xFC, + 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x7F, 0xC3, 0xFF, 0x1F, 0xF8, 0x03, 0xC0, 0x5F, 0x3F, 0xFB, 0xFF, + 0xDF, 0xFE, 0xF1, 0xF7, 0x8F, 0xBF, 0xFD, 0xFF, 0xE7, 0xFF, 0x07, 0x80, 0x07, 0x3C, 0x01, 0xFE, + 0x00, 0x7F, 0x80, 0x0F, 0xC0, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x07, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF0, 0x0F, 0x3C, 0x07, 0xCF, 0x81, 0xE3, 0xE0, 0x78, 0x78, + 0x3F, 0xFF, 0x0F, 0xFF, 0xC7, 0xFF, 0xF9, 0xFF, 0xFE, 0x7C, 0x0F, 0xBE, 0x01, 0xFF, 0x80, 0x7C, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE7, 0x07, 0xF8, 0x3F, 0xC0, 0xFC, 0x00, 0x00, 0x7E, 0x07, 0xFC, 0x3F, 0xF1, 0xFF, 0x80, 0x3C, + 0x05, 0xF3, 0xFF, 0xBF, 0xFD, 0xFF, 0xEF, 0x1F, 0x78, 0xFB, 0xFF, 0xDF, 0xFE, 0x7F, 0xF0, 0x78, + 0x03, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, 0x00, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, 0xFF, 0xEF, + 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3F, 0xF9, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1C, 0x01, 0xF0, 0x0F, 0x80, 0x3C, 0x00, 0x80, + 0x0F, 0x81, 0xFF, 0x1F, 0xF8, 0xFF, 0xEF, 0x8F, 0x78, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x3F, 0x08, 0xFF, 0xE7, 0xFF, 0x0F, 0xF8, 0x1F, 0x00, 0xE0, 0x0F, 0x00, 0x7C, 0x03, 0xC0, 0x04, + 0x00, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x00, 0xF0, 0x07, 0x03, 0xFF, 0xDF, 0xFE, 0xFF, 0xF7, + 0xFF, 0xBC, 0x01, 0xE0, 0x0F, 0x00, 0x7F, 0xF3, 0xFF, 0x9F, 0xFC, 0xFF, 0xE7, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x07, 0x00, 0x78, + 0x03, 0x80, 0x3E, 0x07, 0xFC, 0x7F, 0xE3, 0xFF, 0xBE, 0x3D, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0xFC, 0x23, 0xFF, 0x9F, 0xFC, 0x3F, 0xE0, 0x7C, 0x00, 0x00, 0x01, 0xEE, 0x1F, 0xF0, + 0xFF, 0x82, 0x78, 0x00, 0x03, 0xFF, 0xDF, 0xFE, 0xFF, 0xF7, 0xFF, 0xBC, 0x01, 0xE0, 0x0F, 0x00, + 0x7F, 0xF3, 0xFF, 0x9F, 0xFC, 0xFF, 0xE7, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0xFF, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x1E, 0xC1, 0xFF, 0x1F, 0xF8, 0x67, 0x80, 0x00, 0x07, 0xC0, 0xFF, 0x8F, 0xFC, 0x7F, + 0xF7, 0xC7, 0xBC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x1F, 0x84, 0x7F, 0xF3, 0xFF, 0x87, + 0xFC, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x60, 0x03, 0xC0, 0x1F, 0x06, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, + 0xF0, 0x39, 0xC0, 0x42, 0x0F, 0xFF, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0xCF, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xFF, 0x8F, 0xFE, 0x3F, 0xF8, 0xFF, 0xE3, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xFF, 0xF3, 0xFF, + 0xEF, 0xFF, 0xBF, 0xFE, 0x00, 0x18, 0x00, 0x38, 0x00, 0xF0, 0x13, 0xE0, 0x7F, 0x03, 0xFC, 0x0F, + 0xF0, 0x1E, 0xE0, 0x10, 0x80, 0x1F, 0x00, 0xFF, 0x83, 0xFF, 0x07, 0xFF, 0x1F, 0x1E, 0x3C, 0x3E, + 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF3, 0xE0, 0x07, 0xE1, 0x07, 0xFF, 0x0F, 0xFE, 0x07, 0xFC, 0x03, + 0xE0, 0x00, 0x00, 0x0C, 0x00, 0xF0, 0x07, 0xC0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, 0xF8, 0x39, 0xC0, + 0x84, 0x3F, 0xFD, 0xFF, 0xEF, 0xFF, 0x7F, 0xFB, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0xFF, 0x3F, 0xF9, + 0xFF, 0xCF, 0xFE, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0xC0, 0x0F, 0x00, 0x7C, 0x05, 0xF0, 0x77, 0x8F, 0xD8, 0xFF, 0x07, 0xB8, 0x10, 0x80, 0x7C, 0x0F, + 0xF8, 0xFF, 0xC7, 0xFF, 0x7C, 0x7B, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF8, 0x47, + 0xFF, 0x3F, 0xF8, 0x7F, 0xC0, 0xF8, 0x00, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x0F, 0x06, 0x78, 0x3D, + 0xC1, 0xF8, 0x0F, 0xF0, 0x39, 0xC0, 0x42, 0x0F, 0xFF, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0xCF, 0x00, + 0x3C, 0x00, 0xF0, 0x03, 0xFF, 0x8F, 0xFE, 0x3F, 0xF8, 0xFF, 0xE3, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0xFF, 0xF3, 0xFF, 0xEF, 0xFF, 0xBF, 0xFE, 0x00, 0xF8, 0x03, 0xF0, 0x0F, 0xC0, 0x8F, 0x07, 0x78, + 0x7F, 0xC3, 0xFC, 0x0F, 0x70, 0x10, 0x80, 0x3E, 0x03, 0xFE, 0x1F, 0xF8, 0x7F, 0xF3, 0xE3, 0xCF, + 0x0F, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xEF, 0x80, 0x3F, 0x08, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0x01, + 0xF0, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0xFF, 0x83, 0x38, 0x03, 0x00, 0x3C, 0x03, 0xF0, 0x3F, 0xC1, + 0xCE, 0x04, 0x21, 0xFF, 0xEF, 0xFF, 0x7F, 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x07, 0x80, 0x3F, 0xF9, + 0xFF, 0xCF, 0xFE, 0x7F, 0xF3, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x1E, 0xC1, 0xFF, 0x0F, 0xF8, 0x6F, 0x80, 0x20, 0x03, 0x80, 0x7E, 0x07, 0xF8, 0x3D, 0xC0, + 0x84, 0x03, 0xE0, 0x7F, 0xC7, 0xFE, 0x3F, 0xFB, 0xE3, 0xDE, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x0F, 0xC2, 0x3F, 0xF9, 0xFF, 0xC3, 0xFE, 0x07, 0xC0, 0x06, 0x00, 0x78, 0x07, 0xE0, 0x7F, + 0x83, 0x9C, 0x08, 0x43, 0xFF, 0xDF, 0xFE, 0xFF, 0xF7, 0xFF, 0xBC, 0x01, 0xE0, 0x0F, 0x00, 0x7F, + 0xF3, 0xFF, 0x9F, 0xFC, 0xFF, 0xE7, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x70, 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x02, 0x00, 0x02, 0x00, 0x38, 0x07, 0xE0, + 0x7F, 0x83, 0xDC, 0x08, 0x40, 0x3E, 0x07, 0xFC, 0x7F, 0xE3, 0xFF, 0xBE, 0x3D, 0xE1, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x23, 0xFF, 0x9F, 0xFC, 0x3F, 0xE0, 0x7C, 0x03, 0x80, 0x3C, + 0x01, 0xF0, 0x0F, 0x00, 0x10, 0x00, 0xFB, 0xFF, 0xCF, 0x79, 0xC7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, + 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x78, 0xF9, 0xF8, 0xF3, 0xC7, 0x0E, 0x3E, 0x7C, + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE0, 0x7B, 0xDE, 0xF7, 0xBD, 0xEF, 0x7B, + 0xDE, 0xF7, 0xBD, 0xEF, 0x7B, 0xC0, 0xE7, 0xBD, 0xE0, 0x03, 0xFF, 0xFF, 0x91, 0xDF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x3B, 0xFF, 0x79, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xFF, + 0xE0, 0xFF, 0xFC, 0x7E, 0x1F, 0x9F, 0x03, 0xEF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x0F, 0x9F, 0x03, 0xE7, 0xF7, 0xF8, 0xFF, 0xFC, 0x1F, 0xFE, + 0x03, 0xFF, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x02, 0x00, + 0x0F, 0x80, 0xFF, 0x87, 0xFF, 0x1F, 0xFC, 0xF8, 0xFB, 0xE1, 0xEF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, + 0xE3, 0xEF, 0xCF, 0x9F, 0xFC, 0x3F, 0xF0, 0x7F, 0x80, 0x70, 0x01, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0x78, 0x00, 0x80, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, + 0x00, 0x3F, 0x00, 0x3F, 0xF0, 0x3F, 0xFE, 0x0F, 0xFF, 0xC7, 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, + 0x7F, 0x7F, 0x8F, 0xFF, 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x3E, 0x00, + 0xFC, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF8, 0x0F, 0xF8, 0x7F, 0xF1, 0xFF, 0xCF, 0x8F, 0xBE, + 0x1E, 0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xBE, 0x3E, 0xFC, 0xF9, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0xDF, 0x00, 0x7F, 0x00, 0x3F, + 0x00, 0x1F, 0xE0, 0x07, 0x38, 0x00, 0x84, 0x00, 0x3F, 0x00, 0x3F, 0xF0, 0x3F, 0xFE, 0x0F, 0xFF, + 0xC7, 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, 0xFF, 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, + 0x01, 0xE0, 0x00, 0x00, 0x18, 0x00, 0x38, 0x00, 0xF8, 0x13, 0xE0, 0x77, 0x01, 0xF4, 0x07, 0xF8, + 0x0E, 0xE0, 0x08, 0xC0, 0x1F, 0x00, 0xFF, 0x83, 0xFF, 0x87, 0xFF, 0x1F, 0x1F, 0x3E, 0x1E, 0x78, + 0x3C, 0xF0, 0x79, 0xE0, 0xF3, 0xE3, 0xE7, 0xE7, 0xC7, 0xFF, 0x07, 0xFE, 0x07, 0xF8, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x1C, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0xFE, 0x00, 0x7B, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x07, 0x38, 0x00, 0x84, 0x00, 0x3F, 0x00, 0x3F, 0xF0, 0x3F, 0xFE, 0x0F, 0xFF, 0xC7, + 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, 0xFF, 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0x01, + 0xE0, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3E, 0x00, 0x7C, 0x02, 0xF0, 0x1D, 0xC0, 0xF8, 0x07, 0xF8, + 0x1D, 0xC0, 0x23, 0x00, 0xF8, 0x0F, 0xF8, 0x7F, 0xF1, 0xFF, 0xCF, 0x8F, 0xBE, 0x1E, 0xF0, 0x7B, + 0xC1, 0xEF, 0x07, 0xBE, 0x3E, 0xFC, 0xF9, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x07, 0x00, 0x00, 0x3E, + 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0xDE, 0x00, 0x7B, 0x80, 0x3F, 0x00, 0x1F, 0xE0, + 0x07, 0x38, 0x00, 0x84, 0x00, 0x3F, 0x00, 0x3F, 0xF0, 0x3F, 0xFE, 0x0F, 0xFF, 0xC7, 0xE1, 0xF9, + 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, + 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, 0xFF, 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0x01, 0xE0, 0x00, + 0x00, 0x60, 0x03, 0xE0, 0x0F, 0xC0, 0x07, 0x02, 0x3C, 0x1D, 0xE0, 0xFF, 0x07, 0xF8, 0x1D, 0xC0, + 0x23, 0x00, 0xF8, 0x0F, 0xF8, 0x7F, 0xF1, 0xFF, 0xCF, 0x8F, 0xBE, 0x1E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x07, 0xBE, 0x3E, 0xFC, 0xF9, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x07, 0x00, 0x00, 0x00, 0x01, 0xFF, + 0x00, 0xFF, 0xC0, 0x3F, 0xE0, 0x06, 0x70, 0x00, 0x30, 0x00, 0x1E, 0x00, 0x0F, 0xC0, 0x07, 0xF8, + 0x01, 0xCE, 0x00, 0x21, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x0F, 0xFF, 0x83, 0xFF, 0xF1, 0xF8, 0x7E, + 0x7C, 0x0F, 0xBE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, + 0xE0, 0x3E, 0x7C, 0x0F, 0x9F, 0xDF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x78, 0x00, + 0x1E, 0x60, 0xFF, 0x83, 0xFE, 0x0E, 0xF0, 0x02, 0x00, 0x1C, 0x00, 0xF8, 0x07, 0xF8, 0x1D, 0xC0, + 0x23, 0x00, 0xF8, 0x0F, 0xF8, 0x7F, 0xF1, 0xFF, 0xCF, 0x8F, 0xBE, 0x1E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x07, 0xBE, 0x3E, 0xFC, 0xF9, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x78, + 0x00, 0x3F, 0x00, 0x1F, 0xE0, 0x07, 0x38, 0x00, 0x84, 0x00, 0x3F, 0x00, 0x3F, 0xF0, 0x3F, 0xFE, + 0x0F, 0xFF, 0xC7, 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, + 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, 0xFF, 0xC1, 0xFF, 0xE0, + 0x3F, 0xF0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x20, 0x00, + 0x02, 0x00, 0x1C, 0x00, 0xF8, 0x07, 0xF8, 0x1D, 0xC0, 0x23, 0x00, 0xF8, 0x0F, 0xF8, 0x7F, 0xF1, + 0xFF, 0xCF, 0x8F, 0xBE, 0x1E, 0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xBE, 0x3E, 0xFC, 0xF9, 0xFF, 0xC3, + 0xFF, 0x07, 0xF8, 0x07, 0x00, 0x1C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x00, 0x00, 0x60, + 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xC3, 0xC0, 0x40, 0xF0, 0x3F, 0x7C, 0x3F, 0xFE, + 0x3F, 0xFF, 0x8F, 0xFF, 0xC7, 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, 0xFF, 0xC1, + 0xFF, 0xE0, 0x3F, 0xF0, 0x01, 0xE0, 0x00, 0x01, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x7C, 0x00, 0xE3, + 0xC0, 0x87, 0x83, 0xEF, 0x1F, 0xFE, 0x7F, 0xFC, 0xFF, 0xF3, 0xE3, 0xE7, 0xC3, 0xCF, 0x07, 0x9E, + 0x0F, 0x3C, 0x1E, 0x7C, 0x7C, 0xFC, 0xF8, 0xFF, 0xE0, 0xFF, 0xC0, 0xFF, 0x00, 0x70, 0x00, 0x01, + 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF3, 0xC0, 0x18, 0xF0, 0x3F, 0x7C, 0x3F, + 0xFE, 0x3F, 0xFF, 0x8F, 0xFF, 0xC7, 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, + 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, 0xFF, + 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0x01, 0xE0, 0x00, 0x06, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x3C, 0x00, + 0x3B, 0xC0, 0x27, 0x83, 0xEF, 0x1F, 0xFE, 0x7F, 0xFC, 0xFF, 0xF3, 0xE3, 0xE7, 0xC3, 0xCF, 0x07, + 0x9E, 0x0F, 0x3C, 0x1E, 0x7C, 0x7C, 0xFC, 0xF8, 0xFF, 0xE0, 0xFF, 0xC0, 0xFF, 0x00, 0x70, 0x00, + 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, 0xE3, 0xC0, 0x70, 0xF0, 0x3F, 0x7C, + 0x3F, 0xFE, 0x3F, 0xFF, 0x8F, 0xFF, 0xC7, 0xE1, 0xF9, 0xF0, 0x3E, 0xF8, 0x07, 0xFE, 0x01, 0xFF, + 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0xF9, 0xF0, 0x3E, 0x7F, 0x7F, 0x8F, + 0xFF, 0xC1, 0xFF, 0xE0, 0x3F, 0xF0, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x1E, + 0x00, 0x7B, 0xC0, 0xE7, 0x83, 0xEF, 0x1F, 0xFE, 0x7F, 0xFC, 0xFF, 0xF3, 0xE3, 0xE7, 0xC3, 0xCF, + 0x07, 0x9E, 0x0F, 0x3C, 0x1E, 0x7C, 0x7C, 0xFC, 0xF8, 0xFF, 0xE0, 0xFF, 0xC0, 0xFF, 0x00, 0x70, + 0x00, 0x03, 0x98, 0x01, 0xFF, 0x00, 0xFF, 0x80, 0x1B, 0xCF, 0x00, 0x03, 0xC0, 0xFD, 0xF0, 0xFF, + 0xF8, 0xFF, 0xFE, 0x3F, 0xFF, 0x1F, 0x87, 0xE7, 0xC0, 0xFB, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x03, 0xE7, 0xC0, 0xF9, 0xFD, 0xFE, 0x3F, 0xFF, + 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x07, 0x80, 0x1E, 0x60, 0x7F, 0xC0, 0xFF, 0x81, 0xDF, 0xE0, 0x03, + 0xC1, 0xF7, 0x8F, 0xFF, 0x3F, 0xFE, 0x7F, 0xF9, 0xF1, 0xF3, 0xE1, 0xE7, 0x83, 0xCF, 0x07, 0x9E, + 0x0F, 0x3E, 0x3E, 0x7E, 0x7C, 0x7F, 0xF0, 0x7F, 0xE0, 0x7F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x3C, 0x0F, 0xDF, 0x0F, 0xFF, 0x8F, 0xFF, 0xE3, 0xFF, 0xF1, 0xF8, 0x7E, 0x7C, + 0x0F, 0xBE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, + 0x3E, 0x7C, 0x0F, 0x9F, 0xDF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x78, 0x00, 0x1C, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x08, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x3E, 0xF1, + 0xFF, 0xE7, 0xFF, 0xCF, 0xFF, 0x3E, 0x3E, 0x7C, 0x3C, 0xF0, 0x79, 0xE0, 0xF3, 0xC1, 0xE7, 0xC7, + 0xCF, 0xCF, 0x8F, 0xFE, 0x0F, 0xFC, 0x0F, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x40, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, 0xFF, 0x03, 0xFE, + 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, 0xEF, 0x87, 0xDF, 0xBF, + 0xBF, 0xFE, 0x3F, 0xFC, 0x3F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, + 0x80, 0x70, 0x7F, 0x8F, 0xF8, 0xFF, 0x8F, 0xF8, 0xFF, 0x8F, 0xF8, 0xFF, 0x8F, 0xF8, 0xFF, 0x8F, + 0xFC, 0xF7, 0xFF, 0x7F, 0xF3, 0xFF, 0x07, 0x80, 0x70, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0x20, 0x07, + 0xC0, 0x0F, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x1E, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, + 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, + 0x3F, 0xE0, 0x7B, 0xE1, 0xF7, 0xEF, 0xEF, 0xFF, 0x8F, 0xFF, 0x0F, 0xF8, 0x03, 0xC0, 0x1F, 0x01, + 0xF8, 0x0F, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x70, 0x7F, 0x8F, 0xF8, 0xFF, 0x8F, 0xF8, 0xFF, 0x8F, + 0xF8, 0xFF, 0x8F, 0xF8, 0xFF, 0x8F, 0xFC, 0xF7, 0xFF, 0x7F, 0xF3, 0xFF, 0x07, 0x80, 0x00, 0xC0, + 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0xC0, 0xF7, 0x81, 0xFF, 0xE0, 0x7F, + 0xF8, 0x1F, 0xBE, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, + 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE1, 0xF0, 0xF8, 0x7E, 0xFE, 0x1F, 0xFF, 0x03, + 0xFF, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x78, 0x00, 0xE1, + 0xE0, 0x83, 0xDC, 0x1F, 0xFC, 0x7F, 0xF8, 0xFD, 0xF1, 0xE3, 0xE3, 0xC7, 0xC7, 0x8F, 0x8F, 0x1F, + 0x1E, 0x3E, 0x3C, 0x7C, 0x78, 0xFC, 0xF0, 0xFF, 0xE1, 0xFF, 0xC1, 0xFF, 0x80, 0x78, 0x00, 0x06, + 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC3, 0xC0, 0x20, 0xF7, 0x81, 0xFF, 0xE0, + 0x7F, 0xF8, 0x1F, 0xBE, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, + 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE1, 0xF0, 0xF8, 0x7E, 0xFE, 0x1F, 0xFF, + 0x03, 0xFF, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, + 0x79, 0xE0, 0x43, 0xDC, 0x1F, 0xFC, 0x7F, 0xF8, 0xFD, 0xF1, 0xE3, 0xE3, 0xC7, 0xC7, 0x8F, 0x8F, + 0x1F, 0x1E, 0x3E, 0x3C, 0x7C, 0x78, 0xFC, 0xF0, 0xFF, 0xE1, 0xFF, 0xC1, 0xFF, 0x80, 0x78, 0x00, + 0x07, 0xC0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x07, 0x80, 0x03, 0xC3, 0xC0, 0xE0, 0xF7, 0x81, 0xFF, + 0xE0, 0x7F, 0xF8, 0x1F, 0xBE, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, + 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE1, 0xF0, 0xF8, 0x7E, 0xFE, 0x1F, + 0xFF, 0x03, 0xFF, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x1C, + 0x00, 0x79, 0xE0, 0xE3, 0xDC, 0x1F, 0xFC, 0x7F, 0xF8, 0xFD, 0xF1, 0xE3, 0xE3, 0xC7, 0xC7, 0x8F, + 0x8F, 0x1F, 0x1E, 0x3E, 0x3C, 0x7C, 0x78, 0xFC, 0xF0, 0xFF, 0xE1, 0xFF, 0xC1, 0xFF, 0x80, 0x78, + 0x00, 0x07, 0x30, 0x03, 0xFE, 0x01, 0xFF, 0x00, 0x37, 0x8F, 0x00, 0x03, 0xDE, 0x07, 0xFF, 0x81, + 0xFF, 0xE0, 0x7E, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, + 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x87, 0xC3, 0xE1, 0xFB, 0xF8, 0x7F, 0xFC, + 0x0F, 0xFF, 0x01, 0xFF, 0x00, 0x0F, 0x00, 0x1E, 0xC0, 0x7F, 0xC0, 0xFF, 0x81, 0x9E, 0xF0, 0x01, + 0xEE, 0x0F, 0xFE, 0x3F, 0xFC, 0x7E, 0xF8, 0xF1, 0xF1, 0xE3, 0xE3, 0xC7, 0xC7, 0x8F, 0x8F, 0x1F, + 0x1E, 0x3E, 0x3C, 0x7E, 0x78, 0x7F, 0xF0, 0xFF, 0xE0, 0xFF, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x3D, 0xE0, 0x7F, 0xF8, 0x1F, 0xFE, 0x07, 0xEF, 0x81, 0xE3, 0xE0, 0x78, 0xF8, + 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, 0xE0, + 0x78, 0x7C, 0x3E, 0x1F, 0xBF, 0x87, 0xFF, 0xC0, 0xFF, 0xF0, 0x1F, 0xF0, 0x00, 0xF0, 0x00, 0x38, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x10, 0x00, 0x00, 0x1E, 0x00, 0x3D, 0xC1, 0xFF, + 0xC7, 0xFF, 0x8F, 0xDF, 0x1E, 0x3E, 0x3C, 0x7C, 0x78, 0xF8, 0xF1, 0xF1, 0xE3, 0xE3, 0xC7, 0xC7, + 0x8F, 0xCF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x07, 0x80, 0x0E, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF0, 0x00, 0x40, 0x00, 0x03, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x06, + 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x7C, 0x1F, 0x3E, 0x1F, 0x0F, 0x8F, 0x87, 0xCF, 0x81, 0xF7, 0xC0, + 0xFF, 0xC0, 0x3F, 0xE0, 0x0F, 0xE0, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x0C, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, + 0x0C, 0x00, 0x00, 0x3E, 0x1F, 0xF8, 0x79, 0xE1, 0xE7, 0xCF, 0x9F, 0x3C, 0x3C, 0xF0, 0xFF, 0xC3, + 0xFE, 0x07, 0xF8, 0x1F, 0xE0, 0x3F, 0x00, 0xFC, 0x01, 0xE0, 0x0F, 0x81, 0x7C, 0x0F, 0xF0, 0x3F, + 0x80, 0xFC, 0x00, 0xF8, 0x0F, 0x7C, 0x0F, 0x9F, 0x07, 0xCF, 0x87, 0xC3, 0xE3, 0xE1, 0xF3, 0xE0, + 0x7D, 0xF0, 0x1F, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3C, 0x00, + 0x1F, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x70, 0x39, 0xF0, 0xFB, 0xE1, 0xE3, 0xC7, 0xC7, 0xCF, 0x8F, + 0x9E, 0x0F, 0x3C, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0xF0, + 0x03, 0xE6, 0x7F, 0x9E, 0xFF, 0x3D, 0xFC, 0x7B, 0xE0, 0x60, 0x07, 0xC0, 0x03, 0xF0, 0x00, 0xF8, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x03, 0xE0, 0x3D, 0xF0, 0x3E, 0x7C, 0x1F, 0x3E, 0x1F, 0x0F, + 0x8F, 0x87, 0xCF, 0x81, 0xF7, 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x01, 0xF0, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x0F, 0x80, 0x3F, + 0x00, 0xFC, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x07, 0x03, 0xBE, 0x1F, 0xF8, 0x79, 0xE3, 0xE7, 0xCF, + 0x9F, 0x3C, 0x3C, 0xF0, 0xFF, 0xC1, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x3F, 0x00, 0xFC, 0x01, 0xE0, + 0x0F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xF8, 0x00, 0x00, 0x00, 0x03, 0xDC, 0x03, 0xFE, 0x03, + 0xFE, 0x00, 0xCE, 0x00, 0x00, 0x03, 0xE0, 0x3D, 0xF0, 0x3E, 0x7C, 0x1F, 0x3E, 0x1F, 0x0F, 0x8F, + 0x87, 0xCF, 0x81, 0xF7, 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x0E, 0x60, 0x7F, 0xC3, + 0xFE, 0x06, 0xF0, 0x00, 0x01, 0xC0, 0xEF, 0x87, 0xFE, 0x1E, 0x78, 0xF9, 0xF3, 0xE7, 0xCF, 0x0F, + 0x3C, 0x3F, 0xF0, 0x7F, 0x81, 0xFE, 0x07, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0x78, 0x03, 0xE0, 0xFF, + 0x03, 0xFC, 0x0F, 0xE0, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x03, 0x37, 0x8C, 0x7B, 0xF3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x00, 0x00, 0x30, 0x37, 0xEC, 0xDB, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x00, 0x00, 0x61, 0x83, 0xF6, 0x66, + 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFD, 0xEF, 0x7B, 0xC0, 0x79, 0xE7, 0x9E, + 0x7B, 0xCF, 0x00, 0x79, 0xE7, 0x9E, 0x7B, 0xCF, 0x00, 0x79, 0xDE, 0xFF, 0x3F, 0xDE, 0xF7, 0xBD, + 0xEF, 0x78, 0x7B, 0xEF, 0x7D, 0xEF, 0xBD, 0xE7, 0xBD, 0xE7, 0xBC, 0xE0, 0x7B, 0xEF, 0x7D, 0xEF, + 0xBD, 0xE7, 0xBD, 0xE7, 0xBC, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x3E, 0x3F, 0x9F, 0xCF, 0xE7, 0xF3, 0xF8, 0xF8, 0x78, 0x38, + 0x3D, 0xF0, 0xF8, 0x7F, 0xE1, 0xF0, 0xFF, 0xC3, 0xE1, 0xF7, 0x83, 0x83, 0xC0, 0x3F, 0x03, 0xC0, + 0x00, 0x3F, 0xC3, 0xE0, 0x00, 0x1E, 0xF1, 0xE0, 0x00, 0x0E, 0x79, 0xE0, 0x00, 0x07, 0x1C, 0xF0, + 0x00, 0x03, 0x9E, 0xF0, 0x00, 0x01, 0xEF, 0xF8, 0x00, 0x00, 0xFF, 0x78, 0x00, 0x00, 0x3F, 0x7D, + 0xF8, 0x7E, 0x00, 0x3D, 0xFE, 0x7F, 0x80, 0x3D, 0xEF, 0x7B, 0xC0, 0x1E, 0xF3, 0xBC, 0xE0, 0x1E, + 0x71, 0xDC, 0x70, 0x1F, 0x3C, 0xEF, 0x38, 0x0F, 0x1E, 0xF7, 0xBC, 0x0F, 0x87, 0xF9, 0xFE, 0x07, + 0x81, 0xF8, 0x7E, 0x00, 0x00, 0x0E, 0x1F, 0x3E, 0x7C, 0x7C, 0xF8, 0x7C, 0x7C, 0x3E, 0x1F, 0x0E, + 0x08, 0x10, 0x78, 0x78, 0x7C, 0x3E, 0x3E, 0x1F, 0x3E, 0x3E, 0x7C, 0x78, 0x78, 0x10, 0x00, 0x78, + 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, + 0xF0, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x00, 0x3E, 0x3F, + 0xBD, 0xFE, 0x7E, 0x3F, 0x1F, 0xCF, 0xEF, 0x7F, 0x1F, 0x00, 0x0F, 0x0F, 0x87, 0xC7, 0xE7, 0x73, + 0xBB, 0xFF, 0xFF, 0x07, 0x03, 0x80, 0x7F, 0x3F, 0x9C, 0x0E, 0x07, 0xE3, 0xF8, 0x3C, 0x8E, 0x7F, + 0x7F, 0x00, 0x0F, 0x1F, 0x9F, 0x8F, 0x07, 0xF7, 0xFB, 0xDE, 0xEF, 0x7F, 0x1F, 0x00, 0xFF, 0xFF, + 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x70, 0x78, 0x3C, 0x1E, 0x00, 0x3F, 0x3F, 0xBD, 0xEE, 0xE7, 0xF3, + 0xFB, 0xDF, 0xEF, 0xFF, 0xBF, 0x80, 0x3E, 0x3F, 0xBD, 0xDE, 0xF7, 0xFB, 0xFC, 0x1C, 0x3E, 0x7E, + 0x3E, 0x00, 0x3E, 0x3F, 0xBD, 0xFE, 0x7E, 0x3F, 0x1F, 0xCF, 0xEF, 0x7F, 0x1F, 0x00, 0x1E, 0xFD, + 0xFB, 0xF0, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x7E, 0x7F, 0x9B, 0xC1, 0xE1, 0xF1, 0xF1, 0xF0, 0xF0, + 0x7F, 0x7F, 0x80, 0x7E, 0xFF, 0x6F, 0x0F, 0x3E, 0x3F, 0x0F, 0x47, 0xFF, 0xFE, 0x0F, 0x0F, 0x87, + 0xC7, 0xE7, 0x73, 0xBB, 0xFF, 0xFF, 0x07, 0x03, 0x80, 0x7F, 0x3F, 0x9C, 0x0E, 0x07, 0xE3, 0xF8, + 0x3C, 0x8E, 0x7F, 0x7F, 0x00, 0x0F, 0x1F, 0x9F, 0x8F, 0x07, 0xF7, 0xFB, 0xDE, 0xEF, 0x7F, 0x1F, + 0x00, 0xFF, 0xFF, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x70, 0x78, 0x3C, 0x1E, 0x00, 0x3F, 0x3F, 0xBD, + 0xEE, 0xE7, 0xF3, 0xFB, 0xDF, 0xEF, 0xFF, 0xBF, 0x80, 0x3E, 0x3F, 0xBD, 0xDE, 0xF7, 0xFB, 0xFC, + 0x1C, 0x3E, 0x7E, 0x3E, 0x00, 0x7F, 0xF1, 0xEF, 0xFF, 0x3D, 0xFF, 0xE7, 0xBC, 0x1C, 0xF7, 0x93, + 0xDE, 0xF7, 0x7B, 0xDE, 0xEF, 0x7B, 0xDD, 0xEF, 0x7B, 0xBD, 0xEF, 0x77, 0xBD, 0xEE, 0x6F, 0xBD, + 0xC3, 0xF7, 0xBF, 0xFC, 0xF7, 0xFF, 0x9E, 0xFF, 0xC0, 0x07, 0xF8, 0x3F, 0xE1, 0xFF, 0x87, 0xC4, + 0x3E, 0x00, 0xF0, 0x0F, 0xFE, 0x3F, 0xF8, 0x7C, 0x01, 0xF0, 0x0F, 0xFE, 0x3F, 0xF0, 0x3C, 0x00, + 0xFC, 0xE1, 0xFF, 0x87, 0xFE, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x07, 0xB0, + 0x1F, 0xC0, 0x7F, 0x07, 0xF8, 0x3F, 0x80, 0xFF, 0xC1, 0x7F, 0x01, 0xFC, 0x3F, 0xC0, 0xFE, 0x01, + 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x1F, 0xE0, 0xFF, 0xC3, 0xFF, 0x06, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC3, 0xF8, 0x1F, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x01, 0xF9, 0xC3, 0xFF, 0x8F, + 0xFE, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF8, 0x01, 0xE3, 0xFF, 0xEF, 0xFF, 0x80, + 0xF8, 0x0F, 0xE3, 0xFF, 0x0F, 0xF8, 0x3F, 0xC0, 0xFC, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, + 0xC0, 0x1F, 0xC0, 0x7F, 0xE0, 0x7F, 0xE0, 0xCF, 0xC0, 0x07, 0xC0, 0x07, 0x83, 0xFF, 0x0F, 0xFE, + 0x3F, 0xFC, 0xFC, 0xF9, 0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x0F, 0x9F, 0x3E, 0x3F, 0xFC, 0x3F, + 0xF0, 0x3F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF8, 0x03, 0xFE, + 0x00, 0xF7, 0xC0, 0x7D, 0xF0, 0x1E, 0x3C, 0x07, 0x8F, 0x83, 0xE3, 0xE0, 0xF0, 0x7C, 0x7C, 0x1F, + 0x1F, 0x03, 0xC7, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x81, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, + 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, 0xFF, + 0x03, 0xE0, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF, 0x9F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, + 0x0F, 0x80, 0x1F, 0x00, 0xFC, 0x03, 0xE0, 0x1F, 0x00, 0xFC, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, + 0xFF, 0xEF, 0xFF, 0xBF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0xC0, 0x1E, - 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x00, 0x3E, 0x3F, 0xBD, 0xFE, 0x7E, 0x3F, - 0x1F, 0xCF, 0xEF, 0x7F, 0x1F, 0x00, 0x0F, 0x0F, 0x87, 0xC7, 0xE7, 0x73, 0xBB, 0xFF, 0xFF, 0x07, - 0x03, 0x80, 0x7F, 0x3F, 0x9C, 0x0E, 0x07, 0xE3, 0xF8, 0x3C, 0x8E, 0x7F, 0x7F, 0x00, 0x0F, 0x1F, - 0x9F, 0x8F, 0x07, 0xF7, 0xFB, 0xDE, 0xEF, 0x7F, 0x1F, 0x00, 0xFF, 0xFF, 0xC3, 0xC1, 0xE1, 0xE0, - 0xF0, 0x70, 0x78, 0x3C, 0x1E, 0x00, 0x3F, 0x3F, 0xBD, 0xEE, 0xE7, 0xF3, 0xFB, 0xDF, 0xEF, 0xFF, - 0xBF, 0x80, 0x3E, 0x3F, 0xBD, 0xDE, 0xF7, 0xFB, 0xFC, 0x1C, 0x3E, 0x7E, 0x3E, 0x00, 0x3E, 0x3F, - 0xBD, 0xFE, 0x7E, 0x3F, 0x1F, 0xCF, 0xEF, 0x7F, 0x1F, 0x00, 0x1E, 0xFD, 0xFB, 0xF0, 0xE1, 0xC3, - 0x87, 0x0E, 0x1C, 0x7E, 0x7F, 0x9B, 0xC1, 0xE1, 0xF1, 0xF1, 0xF0, 0xF0, 0x7F, 0x7F, 0x80, 0x7E, - 0xFF, 0x6F, 0x0F, 0x3E, 0x3F, 0x0F, 0x47, 0xFF, 0xFE, 0x0F, 0x0F, 0x87, 0xC7, 0xE7, 0x73, 0xBB, - 0xFF, 0xFF, 0x07, 0x03, 0x80, 0x7F, 0x3F, 0x9C, 0x0E, 0x07, 0xE3, 0xF8, 0x3C, 0x8E, 0x7F, 0x7F, - 0x00, 0x0F, 0x1F, 0x9F, 0x8F, 0x07, 0xF7, 0xFB, 0xDE, 0xEF, 0x7F, 0x1F, 0x00, 0xFF, 0xFF, 0xC3, - 0xC1, 0xE1, 0xE0, 0xF0, 0x70, 0x78, 0x3C, 0x1E, 0x00, 0x3F, 0x3F, 0xBD, 0xEE, 0xE7, 0xF3, 0xFB, - 0xDF, 0xEF, 0xFF, 0xBF, 0x80, 0x3E, 0x3F, 0xBD, 0xDE, 0xF7, 0xFB, 0xFC, 0x1C, 0x3E, 0x7E, 0x3E, - 0x00, 0x7F, 0xF1, 0xEF, 0xFF, 0x3D, 0xFF, 0xE7, 0xBC, 0x1C, 0xF7, 0x93, 0xDE, 0xF7, 0x7B, 0xDE, - 0xEF, 0x7B, 0xDD, 0xEF, 0x7B, 0xBD, 0xEF, 0x77, 0xBD, 0xEE, 0x6F, 0xBD, 0xC3, 0xF7, 0xBF, 0xFC, - 0xF7, 0xFF, 0x9E, 0xFF, 0xC0, 0x07, 0xF8, 0x3F, 0xE1, 0xFF, 0x87, 0xC4, 0x3E, 0x00, 0xF0, 0x0F, - 0xFE, 0x3F, 0xF8, 0x7C, 0x01, 0xF0, 0x0F, 0xFE, 0x3F, 0xF0, 0x3C, 0x00, 0xFC, 0xE1, 0xFF, 0x87, - 0xFE, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x07, 0xB0, 0x1F, 0xC0, 0x7F, 0x07, - 0xF8, 0x3F, 0x80, 0xFF, 0xC1, 0x7F, 0x01, 0xFC, 0x3F, 0xC0, 0xFE, 0x01, 0xF8, 0x01, 0xE0, 0x07, - 0x80, 0x1F, 0xE0, 0xFF, 0xC3, 0xFF, 0x06, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, - 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x01, 0xF9, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xF0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF8, 0x01, 0xE3, 0xFF, 0xEF, 0xFF, 0x80, 0xF8, 0x0F, 0xE3, 0xFF, - 0x0F, 0xF8, 0x3F, 0xC0, 0xFC, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0xC0, 0x7F, - 0xE0, 0x7F, 0xE0, 0xCF, 0xC0, 0x07, 0xC0, 0x07, 0x83, 0xFF, 0x0F, 0xFE, 0x3F, 0xFC, 0xFC, 0xF9, - 0xE0, 0xF3, 0xC1, 0xE7, 0x83, 0xCF, 0x0F, 0x9F, 0x3E, 0x3F, 0xFC, 0x3F, 0xF0, 0x3F, 0x80, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF8, 0x03, 0xFE, 0x00, 0xF7, 0xC0, 0x7D, - 0xF0, 0x1E, 0x3C, 0x07, 0x8F, 0x83, 0xE3, 0xE0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x03, 0xC7, 0xFF, - 0xFB, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0x03, 0xFE, - 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, 0xFF, 0x03, 0xFE, 0x07, - 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x7F, 0xC0, 0xFF, 0x81, 0xFF, 0x03, 0xE0, 0xFF, 0xFB, - 0xFF, 0xEF, 0xFF, 0x9F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, - 0xFC, 0x03, 0xE0, 0x1F, 0x00, 0xFC, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xFF, 0xEF, 0xFF, 0xBF, - 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x07, - 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xC0, - 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x00, 0x79, 0xFF, 0xDF, 0x78, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x1C, 0x78, 0x7E, 0x78, 0x7E, 0x78, - 0x7F, 0xF0, 0x7F, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x3E, 0x7C, - 0x7F, 0xFE, 0x7F, 0xFE, 0xF7, 0xEE, 0xF7, 0xEE, 0x7F, 0xFE, 0x7F, 0xFE, 0x3E, 0x7C, 0x00, 0x01, - 0xF0, 0xFC, 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, - 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x3E, 0x3F, 0x8F, 0xC3, 0xE0, 0x00, 0x00, 0x3E, 0x1D, - 0xFE, 0xF7, 0xFF, 0xBD, 0xFE, 0x71, 0xF0, 0x00, 0x03, 0xE1, 0xDF, 0xEF, 0x7F, 0xFB, 0xDF, 0xE7, - 0x1F, 0x00, 0x00, 0xC0, 0x1E, 0x01, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF3, 0x80, 0x78, 0x03, 0x00, 0x01, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xC0, - 0xFF, 0xEF, 0xFF, 0xFF, 0xF3, 0xFF, 0x01, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x78, 0x0F, - 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xF0, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x78, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xC7, 0xF1, 0xFE, 0x7F, 0x9F, 0xF3, 0xFC, 0xF9, 0x3F, 0x6F, - 0x81, 0xE0, 0x7C, 0x0F, 0x03, 0xFE, 0x7F, 0xDF, 0xF3, 0xFE, 0xFF, 0x9F, 0xF7, 0xC0, 0xF0, 0x3E, - 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0xF8, - 0x1E, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0x1F, 0xDE, 0x3F, 0xDF, 0x7F, 0x9F, 0x7C, 0x9E, 0xF8, - 0x00, 0xF8, 0x00, 0xFF, 0x9E, 0xFF, 0x9E, 0xFF, 0x9E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, - 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0x1F, 0xDE, 0x0F, - 0xF7, 0x87, 0xF9, 0xE1, 0xF2, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0xF9, 0xE3, 0xFE, 0x78, 0xFF, - 0x9E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, 0xE0, - 0x7C, 0xF8, 0x1F, 0xBE, 0x03, 0xEF, 0x80, 0x78, 0x1F, 0xC7, 0xF3, 0xCF, 0xF3, 0xFD, 0xF7, 0xFC, - 0xFF, 0x7D, 0xF2, 0x7E, 0x8F, 0xF8, 0x1E, 0x00, 0x3E, 0x07, 0x80, 0x0F, 0xF9, 0xFF, 0x7F, 0xFE, - 0x7F, 0xDF, 0xFF, 0x9F, 0xF7, 0xFE, 0x07, 0x81, 0xFF, 0x81, 0xE0, 0x7F, 0xE0, 0x78, 0x1F, 0xF8, - 0x1E, 0x07, 0xFE, 0x07, 0x81, 0xFF, 0x81, 0xE0, 0x7F, 0xE0, 0x78, 0x1F, 0xF8, 0x1E, 0x07, 0xFE, - 0x07, 0x81, 0xFF, 0x81, 0xE0, 0x7C, 0x1F, 0xC7, 0xF3, 0xC3, 0xFC, 0xFF, 0x7C, 0x7F, 0xCF, 0xF7, - 0xC7, 0xC9, 0xFA, 0x7C, 0xF8, 0x1E, 0x07, 0xCF, 0x81, 0xE0, 0x7C, 0xFF, 0x9F, 0xF7, 0xCF, 0xF9, - 0xFF, 0x7C, 0xFF, 0x9F, 0xF7, 0xCF, 0x81, 0xE0, 0x7C, 0xF8, 0x1E, 0x07, 0xCF, 0x81, 0xE0, 0x7C, - 0xF8, 0x1E, 0x07, 0xCF, 0x81, 0xE0, 0x7C, 0xF8, 0x1E, 0x07, 0xCF, 0x81, 0xE0, 0x7E, 0xF8, 0x1E, - 0x03, 0xFF, 0x81, 0xE0, 0x3F, 0xF8, 0x1E, 0x01, 0xE0, + 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x00, 0x79, 0xFF, 0xDF, 0x78, 0x00, 0x0F, + 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x1C, 0x78, + 0x7E, 0x78, 0x7E, 0x78, 0x7F, 0xF0, 0x7F, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xE0, + 0x03, 0xC0, 0x3E, 0x7C, 0x7F, 0xFE, 0x7F, 0xFE, 0xF7, 0xEE, 0xF7, 0xEE, 0x7F, 0xFE, 0x7F, 0xFE, + 0x3E, 0x7C, 0x00, 0x01, 0xF0, 0xFC, 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, + 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x3E, 0x3F, 0x8F, 0xC3, 0xE0, + 0x00, 0x00, 0x3E, 0x1D, 0xFE, 0xF7, 0xFF, 0xBD, 0xFE, 0x71, 0xF0, 0x00, 0x03, 0xE1, 0xDF, 0xEF, + 0x7F, 0xFB, 0xDF, 0xE7, 0x1F, 0x00, 0x00, 0xC0, 0x1E, 0x01, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x80, 0x78, 0x03, 0x00, 0x01, 0xF3, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xC0, 0xFF, 0xEF, 0xFF, 0xFF, 0xF3, 0xFF, 0x01, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x78, 0x0F, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xF0, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFC, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xC7, 0xF1, 0xFE, 0x7F, 0x9F, 0xF3, + 0xFC, 0xF9, 0x3F, 0x6F, 0x81, 0xE0, 0x7C, 0x0F, 0x03, 0xFE, 0x7F, 0xDF, 0xF3, 0xFE, 0xFF, 0x9F, + 0xF7, 0xC0, 0xF0, 0x3E, 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x78, + 0x1F, 0x03, 0xC0, 0xF8, 0x1E, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0x1F, 0xDE, 0x3F, 0xDF, 0x7F, + 0x9F, 0x7C, 0x9E, 0xF8, 0x00, 0xF8, 0x00, 0xFF, 0x9E, 0xFF, 0x9E, 0xFF, 0x9E, 0xF8, 0x1E, 0xF8, + 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xF8, + 0x1E, 0x1F, 0xDE, 0x0F, 0xF7, 0x87, 0xF9, 0xE1, 0xF2, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x8F, 0xF9, + 0xE3, 0xFE, 0x78, 0xFF, 0x9E, 0x3E, 0x07, 0x8F, 0x81, 0xE3, 0xE0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, + 0x8F, 0x81, 0xE3, 0xE0, 0x7C, 0xF8, 0x1F, 0xBE, 0x03, 0xEF, 0x80, 0x78, 0x1F, 0xC7, 0xF3, 0xCF, + 0xF3, 0xFD, 0xF7, 0xFC, 0xFF, 0x7D, 0xF2, 0x7E, 0x8F, 0xF8, 0x1E, 0x00, 0x3E, 0x07, 0x80, 0x0F, + 0xF9, 0xFF, 0x7F, 0xFE, 0x7F, 0xDF, 0xFF, 0x9F, 0xF7, 0xFE, 0x07, 0x81, 0xFF, 0x81, 0xE0, 0x7F, + 0xE0, 0x78, 0x1F, 0xF8, 0x1E, 0x07, 0xFE, 0x07, 0x81, 0xFF, 0x81, 0xE0, 0x7F, 0xE0, 0x78, 0x1F, + 0xF8, 0x1E, 0x07, 0xFE, 0x07, 0x81, 0xFF, 0x81, 0xE0, 0x7C, 0x1F, 0xC7, 0xF3, 0xC3, 0xFC, 0xFF, + 0x7C, 0x7F, 0xCF, 0xF7, 0xC7, 0xC9, 0xFA, 0x7C, 0xF8, 0x1E, 0x07, 0xCF, 0x81, 0xE0, 0x7C, 0xFF, + 0x9F, 0xF7, 0xCF, 0xF9, 0xFF, 0x7C, 0xFF, 0x9F, 0xF7, 0xCF, 0x81, 0xE0, 0x7C, 0xF8, 0x1E, 0x07, + 0xCF, 0x81, 0xE0, 0x7C, 0xF8, 0x1E, 0x07, 0xCF, 0x81, 0xE0, 0x7C, 0xF8, 0x1E, 0x07, 0xCF, 0x81, + 0xE0, 0x7E, 0xF8, 0x1E, 0x03, 0xFF, 0x81, 0xE0, 0x3F, 0xF8, 0x1E, 0x01, 0xE0, }; static const EpdGlyph ubuntu_12_boldGlyphs[] = { @@ -2202,71 +2460,159 @@ static const EpdGlyph ubuntu_12_boldGlyphs[] = { { 12, 15, 217, 0, 15, 23, 22698 }, // U+05E8 { 18, 15, 315, 1, 15, 34, 22721 }, // U+05E9 { 17, 15, 289, 0, 15, 32, 22755 }, // U+05EA - { 17, 24, 264, 0, 24, 51, 22787 }, // U+1EF2 - { 14, 25, 219, 0, 20, 44, 22838 }, // U+1EF3 - { 2, 18, 0, -1, 17, 5, 22882 }, // U+200C - { 6, 19, 0, -3, 18, 15, 22887 }, // U+200D - { 7, 19, 0, -1, 18, 17, 22902 }, // U+200E - { 7, 19, 0, -6, 18, 17, 22919 }, // U+200F - { 8, 3, 128, 0, 8, 3, 22936 }, // U+2010 - { 13, 3, 200, 0, 9, 5, 22939 }, // U+2013 - { 25, 3, 400, 0, 9, 10, 22944 }, // U+2014 - { 25, 3, 400, 0, 9, 10, 22954 }, // U+2015 - { 5, 7, 97, 1, 19, 5, 22964 }, // U+2018 - { 6, 7, 97, 0, 19, 6, 22969 }, // U+2019 - { 6, 7, 97, 0, 4, 6, 22975 }, // U+201A - { 10, 7, 182, 1, 19, 9, 22981 }, // U+201C - { 11, 7, 182, 0, 19, 10, 22990 }, // U+201D - { 11, 7, 182, 0, 4, 10, 23000 }, // U+201E - { 12, 21, 198, 0, 17, 32, 23010 }, // U+2020 - { 12, 21, 198, 0, 17, 32, 23042 }, // U+2021 - { 9, 7, 146, 0, 12, 8, 23074 }, // U+2022 - { 23, 5, 400, 1, 5, 15, 23082 }, // U+2026 - { 33, 17, 528, 0, 17, 71, 23097 }, // U+2030 - { 8, 13, 131, 0, 14, 13, 23168 }, // U+2039 - { 8, 13, 131, 0, 14, 13, 23181 }, // U+203A - { 14, 18, 61, -5, 18, 32, 23194 }, // U+2044 - { 9, 10, 145, 0, 18, 12, 23226 }, // U+2070 - { 9, 10, 145, 0, 18, 12, 23238 }, // U+2074 - { 9, 10, 145, 0, 18, 12, 23250 }, // U+2075 - { 9, 10, 145, 0, 18, 12, 23262 }, // U+2076 - { 9, 10, 145, 0, 18, 12, 23274 }, // U+2077 - { 9, 10, 145, 0, 18, 12, 23286 }, // U+2078 - { 9, 10, 145, 0, 18, 12, 23298 }, // U+2079 - { 9, 10, 145, 0, 11, 12, 23310 }, // U+2080 - { 7, 10, 145, 0, 11, 9, 23322 }, // U+2081 - { 9, 10, 145, 0, 11, 12, 23331 }, // U+2082 - { 8, 10, 145, 0, 11, 10, 23343 }, // U+2083 - { 9, 10, 145, 0, 11, 12, 23353 }, // U+2084 - { 9, 10, 145, 0, 11, 12, 23365 }, // U+2085 - { 9, 10, 145, 0, 11, 12, 23377 }, // U+2086 - { 9, 10, 145, 0, 11, 12, 23389 }, // U+2087 - { 9, 10, 145, 0, 11, 12, 23401 }, // U+2088 - { 9, 10, 145, 0, 11, 12, 23413 }, // U+2089 - { 19, 15, 346, 1, 15, 36, 23425 }, // U+20AA - { 14, 17, 227, 1, 17, 30, 23461 }, // U+20AC - { 14, 17, 227, 0, 17, 30, 23491 }, // U+20AE - { 14, 17, 227, 0, 17, 30, 23521 }, // U+20B4 - { 14, 17, 227, 1, 17, 30, 23551 }, // U+20B9 - { 15, 18, 245, 0, 18, 34, 23581 }, // U+2202 - { 18, 17, 277, 0, 17, 39, 23615 }, // U+2206 - { 15, 21, 292, 2, 18, 40, 23654 }, // U+220F - { 14, 20, 217, 0, 17, 35, 23694 }, // U+2211 - { 12, 3, 227, 1, 9, 5, 23729 }, // U+2212 - { 14, 18, 61, -5, 18, 32, 23734 }, // U+2215 - { 6, 5, 98, 0, 10, 4, 23766 }, // U+2219 - { 16, 18, 241, 0, 18, 36, 23770 }, // U+221A - { 16, 8, 254, 0, 11, 16, 23806 }, // U+221E - { 10, 25, 160, 0, 19, 32, 23822 }, // U+222B - { 14, 11, 227, 0, 13, 20, 23854 }, // U+2248 - { 12, 14, 227, 1, 14, 21, 23874 }, // U+2260 - { 12, 15, 227, 1, 15, 23, 23895 }, // U+2264 - { 12, 15, 227, 1, 15, 23, 23918 }, // U+2265 - { 21, 19, 336, 1, 19, 50, 23941 }, // U+FB00 - { 16, 19, 283, 1, 19, 38, 23991 }, // U+FB01 - { 18, 19, 294, 1, 19, 43, 24029 }, // U+FB02 - { 26, 19, 451, 1, 19, 62, 24072 }, // U+FB03 - { 28, 19, 462, 1, 19, 67, 24134 }, // U+FB04 + { 18, 24, 288, 0, 18, 54, 22787 }, // U+1EA0 + { 13, 20, 221, 0, 14, 33, 22841 }, // U+1EA1 + { 18, 24, 288, 0, 24, 54, 22874 }, // U+1EA2 + { 13, 21, 221, 0, 20, 35, 22928 }, // U+1EA3 + { 18, 27, 288, 0, 27, 61, 22963 }, // U+1EA4 + { 15, 24, 221, 0, 23, 45, 23024 }, // U+1EA5 + { 18, 28, 288, 0, 28, 63, 23069 }, // U+1EA6 + { 13, 25, 221, 0, 24, 41, 23132 }, // U+1EA7 + { 18, 28, 288, 0, 28, 63, 23173 }, // U+1EA8 + { 14, 25, 221, 0, 24, 44, 23236 }, // U+1EA9 + { 18, 29, 288, 0, 29, 66, 23280 }, // U+1EAA + { 13, 25, 221, 0, 24, 41, 23346 }, // U+1EAB + { 18, 30, 288, 0, 24, 68, 23387 }, // U+1EAC + { 13, 26, 221, 0, 20, 43, 23455 }, // U+1EAD + { 18, 29, 288, 0, 29, 66, 23498 }, // U+1EAE + { 13, 26, 221, 0, 25, 43, 23564 }, // U+1EAF + { 18, 29, 288, 0, 29, 66, 23607 }, // U+1EB0 + { 13, 26, 221, 0, 25, 43, 23673 }, // U+1EB1 + { 18, 30, 288, 0, 30, 68, 23716 }, // U+1EB2 + { 13, 27, 221, 0, 26, 44, 23784 }, // U+1EB3 + { 18, 28, 288, 0, 28, 63, 23828 }, // U+1EB4 + { 13, 25, 221, 0, 24, 41, 23891 }, // U+1EB5 + { 18, 29, 288, 0, 23, 66, 23932 }, // U+1EB6 + { 13, 26, 221, 0, 20, 43, 23998 }, // U+1EB7 + { 13, 24, 242, 2, 18, 39, 24041 }, // U+1EB8 + { 13, 20, 234, 1, 14, 33, 24080 }, // U+1EB9 + { 13, 24, 242, 2, 24, 39, 24113 }, // U+1EBA + { 13, 21, 234, 1, 20, 35, 24152 }, // U+1EBB + { 13, 24, 242, 2, 24, 39, 24187 }, // U+1EBC + { 13, 20, 234, 1, 19, 33, 24226 }, // U+1EBD + { 14, 28, 242, 2, 28, 49, 24259 }, // U+1EBE + { 15, 24, 234, 1, 23, 45, 24308 }, // U+1EBF + { 13, 28, 242, 2, 28, 46, 24353 }, // U+1EC0 + { 13, 24, 234, 1, 23, 39, 24399 }, // U+1EC1 + { 14, 28, 242, 2, 28, 49, 24438 }, // U+1EC2 + { 14, 24, 234, 1, 23, 42, 24487 }, // U+1EC3 + { 13, 29, 242, 2, 29, 48, 24529 }, // U+1EC4 + { 13, 25, 234, 1, 24, 41, 24577 }, // U+1EC5 + { 13, 30, 242, 2, 24, 49, 24618 }, // U+1EC6 + { 13, 26, 234, 1, 20, 43, 24667 }, // U+1EC7 + { 6, 24, 126, 1, 24, 18, 24710 }, // U+1EC8 + { 7, 20, 116, 0, 20, 18, 24728 }, // U+1EC9 + { 5, 24, 126, 1, 18, 15, 24746 }, // U+1ECA + { 5, 26, 116, 1, 20, 17, 24761 }, // U+1ECB + { 18, 24, 316, 1, 18, 54, 24778 }, // U+1ECC + { 14, 20, 243, 1, 14, 35, 24832 }, // U+1ECD + { 18, 25, 316, 1, 24, 57, 24867 }, // U+1ECE + { 14, 21, 243, 1, 20, 37, 24924 }, // U+1ECF + { 18, 29, 316, 1, 28, 66, 24961 }, // U+1ED0 + { 15, 24, 243, 1, 23, 45, 25027 }, // U+1ED1 + { 18, 29, 316, 1, 28, 66, 25072 }, // U+1ED2 + { 14, 25, 243, 1, 24, 44, 25138 }, // U+1ED3 + { 18, 29, 316, 1, 28, 66, 25182 }, // U+1ED4 + { 14, 25, 243, 1, 24, 44, 25248 }, // U+1ED5 + { 18, 30, 316, 1, 29, 68, 25292 }, // U+1ED6 + { 14, 25, 243, 1, 24, 44, 25360 }, // U+1ED7 + { 18, 30, 316, 1, 24, 68, 25404 }, // U+1ED8 + { 14, 26, 243, 1, 20, 46, 25472 }, // U+1ED9 + { 18, 25, 316, 1, 24, 57, 25518 }, // U+1EDA + { 15, 21, 243, 1, 20, 40, 25575 }, // U+1EDB + { 18, 25, 316, 1, 24, 57, 25615 }, // U+1EDC + { 15, 21, 243, 1, 20, 40, 25672 }, // U+1EDD + { 18, 25, 316, 1, 24, 57, 25712 }, // U+1EDE + { 15, 21, 243, 1, 20, 40, 25769 }, // U+1EDF + { 18, 24, 316, 1, 23, 54, 25809 }, // U+1EE0 + { 15, 20, 243, 1, 19, 38, 25863 }, // U+1EE1 + { 18, 27, 316, 1, 21, 61, 25901 }, // U+1EE2 + { 15, 22, 243, 1, 16, 42, 25962 }, // U+1EE3 + { 15, 24, 283, 1, 18, 45, 26004 }, // U+1EE4 + { 12, 20, 236, 1, 14, 30, 26049 }, // U+1EE5 + { 15, 25, 283, 1, 24, 47, 26079 }, // U+1EE6 + { 12, 21, 236, 1, 20, 32, 26126 }, // U+1EE7 + { 18, 25, 299, 1, 24, 57, 26158 }, // U+1EE8 + { 15, 21, 250, 1, 20, 40, 26215 }, // U+1EE9 + { 18, 25, 299, 1, 24, 57, 26255 }, // U+1EEA + { 15, 21, 250, 1, 20, 40, 26312 }, // U+1EEB + { 18, 25, 299, 1, 24, 57, 26352 }, // U+1EEC + { 15, 21, 250, 1, 20, 40, 26409 }, // U+1EED + { 18, 24, 299, 1, 23, 54, 26449 }, // U+1EEE + { 15, 20, 250, 1, 19, 38, 26503 }, // U+1EEF + { 18, 27, 299, 1, 21, 61, 26541 }, // U+1EF0 + { 15, 22, 250, 1, 16, 42, 26602 }, // U+1EF1 + { 17, 24, 264, 0, 24, 51, 26644 }, // U+1EF2 + { 14, 25, 219, 0, 20, 44, 26695 }, // U+1EF3 + { 17, 24, 264, 0, 18, 51, 26739 }, // U+1EF4 + { 15, 19, 219, 0, 14, 36, 26790 }, // U+1EF5 + { 17, 24, 264, 0, 24, 51, 26826 }, // U+1EF6 + { 14, 25, 219, 0, 20, 44, 26877 }, // U+1EF7 + { 17, 24, 264, 0, 24, 51, 26921 }, // U+1EF8 + { 14, 24, 219, 0, 19, 42, 26972 }, // U+1EF9 + { 2, 18, 0, -1, 17, 5, 27014 }, // U+200C + { 6, 19, 0, -3, 18, 15, 27019 }, // U+200D + { 7, 19, 0, -1, 18, 17, 27034 }, // U+200E + { 7, 19, 0, -6, 18, 17, 27051 }, // U+200F + { 8, 3, 128, 0, 8, 3, 27068 }, // U+2010 + { 13, 3, 200, 0, 9, 5, 27071 }, // U+2013 + { 25, 3, 400, 0, 9, 10, 27076 }, // U+2014 + { 25, 3, 400, 0, 9, 10, 27086 }, // U+2015 + { 5, 7, 97, 1, 19, 5, 27096 }, // U+2018 + { 6, 7, 97, 0, 19, 6, 27101 }, // U+2019 + { 6, 7, 97, 0, 4, 6, 27107 }, // U+201A + { 10, 7, 182, 1, 19, 9, 27113 }, // U+201C + { 11, 7, 182, 0, 19, 10, 27122 }, // U+201D + { 11, 7, 182, 0, 4, 10, 27132 }, // U+201E + { 12, 21, 198, 0, 17, 32, 27142 }, // U+2020 + { 12, 21, 198, 0, 17, 32, 27174 }, // U+2021 + { 9, 7, 146, 0, 12, 8, 27206 }, // U+2022 + { 23, 5, 400, 1, 5, 15, 27214 }, // U+2026 + { 33, 17, 528, 0, 17, 71, 27229 }, // U+2030 + { 8, 13, 131, 0, 14, 13, 27300 }, // U+2039 + { 8, 13, 131, 0, 14, 13, 27313 }, // U+203A + { 14, 18, 61, -5, 18, 32, 27326 }, // U+2044 + { 9, 10, 145, 0, 18, 12, 27358 }, // U+2070 + { 9, 10, 145, 0, 18, 12, 27370 }, // U+2074 + { 9, 10, 145, 0, 18, 12, 27382 }, // U+2075 + { 9, 10, 145, 0, 18, 12, 27394 }, // U+2076 + { 9, 10, 145, 0, 18, 12, 27406 }, // U+2077 + { 9, 10, 145, 0, 18, 12, 27418 }, // U+2078 + { 9, 10, 145, 0, 18, 12, 27430 }, // U+2079 + { 9, 10, 145, 0, 11, 12, 27442 }, // U+2080 + { 7, 10, 145, 0, 11, 9, 27454 }, // U+2081 + { 9, 10, 145, 0, 11, 12, 27463 }, // U+2082 + { 8, 10, 145, 0, 11, 10, 27475 }, // U+2083 + { 9, 10, 145, 0, 11, 12, 27485 }, // U+2084 + { 9, 10, 145, 0, 11, 12, 27497 }, // U+2085 + { 9, 10, 145, 0, 11, 12, 27509 }, // U+2086 + { 9, 10, 145, 0, 11, 12, 27521 }, // U+2087 + { 9, 10, 145, 0, 11, 12, 27533 }, // U+2088 + { 9, 10, 145, 0, 11, 12, 27545 }, // U+2089 + { 19, 15, 346, 1, 15, 36, 27557 }, // U+20AA + { 14, 17, 227, 1, 17, 30, 27593 }, // U+20AC + { 14, 17, 227, 0, 17, 30, 27623 }, // U+20AE + { 14, 17, 227, 0, 17, 30, 27653 }, // U+20B4 + { 14, 17, 227, 1, 17, 30, 27683 }, // U+20B9 + { 15, 18, 245, 0, 18, 34, 27713 }, // U+2202 + { 18, 17, 277, 0, 17, 39, 27747 }, // U+2206 + { 15, 21, 292, 2, 18, 40, 27786 }, // U+220F + { 14, 20, 217, 0, 17, 35, 27826 }, // U+2211 + { 12, 3, 227, 1, 9, 5, 27861 }, // U+2212 + { 14, 18, 61, -5, 18, 32, 27866 }, // U+2215 + { 6, 5, 98, 0, 10, 4, 27898 }, // U+2219 + { 16, 18, 241, 0, 18, 36, 27902 }, // U+221A + { 16, 8, 254, 0, 11, 16, 27938 }, // U+221E + { 10, 25, 160, 0, 19, 32, 27954 }, // U+222B + { 14, 11, 227, 0, 13, 20, 27986 }, // U+2248 + { 12, 14, 227, 1, 14, 21, 28006 }, // U+2260 + { 12, 15, 227, 1, 15, 23, 28027 }, // U+2264 + { 12, 15, 227, 1, 15, 23, 28050 }, // U+2265 + { 21, 19, 336, 1, 19, 50, 28073 }, // U+FB00 + { 16, 19, 283, 1, 19, 38, 28123 }, // U+FB01 + { 18, 19, 294, 1, 19, 43, 28161 }, // U+FB02 + { 26, 19, 451, 1, 19, 62, 28204 }, // U+FB03 + { 28, 19, 462, 1, 19, 67, 28266 }, // U+FB04 }; static const EpdUnicodeInterval ubuntu_12_boldIntervals[] = { @@ -2291,36 +2637,36 @@ static const EpdUnicodeInterval ubuntu_12_boldIntervals[] = { { 0x472, 0x475, 0x216 }, { 0x48A, 0x4F9, 0x21A }, { 0x5D0, 0x5EA, 0x28A }, - { 0x1EF2, 0x1EF3, 0x2A5 }, - { 0x200C, 0x2010, 0x2A7 }, - { 0x2013, 0x2015, 0x2AC }, - { 0x2018, 0x201A, 0x2AF }, - { 0x201C, 0x201E, 0x2B2 }, - { 0x2020, 0x2022, 0x2B5 }, - { 0x2026, 0x2026, 0x2B8 }, - { 0x2030, 0x2030, 0x2B9 }, - { 0x2039, 0x203A, 0x2BA }, - { 0x2044, 0x2044, 0x2BC }, - { 0x2070, 0x2070, 0x2BD }, - { 0x2074, 0x2079, 0x2BE }, - { 0x2080, 0x2089, 0x2C4 }, - { 0x20AA, 0x20AA, 0x2CE }, - { 0x20AC, 0x20AC, 0x2CF }, - { 0x20AE, 0x20AE, 0x2D0 }, - { 0x20B4, 0x20B4, 0x2D1 }, - { 0x20B9, 0x20B9, 0x2D2 }, - { 0x2202, 0x2202, 0x2D3 }, - { 0x2206, 0x2206, 0x2D4 }, - { 0x220F, 0x220F, 0x2D5 }, - { 0x2211, 0x2212, 0x2D6 }, - { 0x2215, 0x2215, 0x2D8 }, - { 0x2219, 0x221A, 0x2D9 }, - { 0x221E, 0x221E, 0x2DB }, - { 0x222B, 0x222B, 0x2DC }, - { 0x2248, 0x2248, 0x2DD }, - { 0x2260, 0x2260, 0x2DE }, - { 0x2264, 0x2265, 0x2DF }, - { 0xFB00, 0xFB04, 0x2E1 }, + { 0x1EA0, 0x1EF9, 0x2A5 }, + { 0x200C, 0x2010, 0x2FF }, + { 0x2013, 0x2015, 0x304 }, + { 0x2018, 0x201A, 0x307 }, + { 0x201C, 0x201E, 0x30A }, + { 0x2020, 0x2022, 0x30D }, + { 0x2026, 0x2026, 0x310 }, + { 0x2030, 0x2030, 0x311 }, + { 0x2039, 0x203A, 0x312 }, + { 0x2044, 0x2044, 0x314 }, + { 0x2070, 0x2070, 0x315 }, + { 0x2074, 0x2079, 0x316 }, + { 0x2080, 0x2089, 0x31C }, + { 0x20AA, 0x20AA, 0x326 }, + { 0x20AC, 0x20AC, 0x327 }, + { 0x20AE, 0x20AE, 0x328 }, + { 0x20B4, 0x20B4, 0x329 }, + { 0x20B9, 0x20B9, 0x32A }, + { 0x2202, 0x2202, 0x32B }, + { 0x2206, 0x2206, 0x32C }, + { 0x220F, 0x220F, 0x32D }, + { 0x2211, 0x2212, 0x32E }, + { 0x2215, 0x2215, 0x330 }, + { 0x2219, 0x221A, 0x331 }, + { 0x221E, 0x221E, 0x333 }, + { 0x222B, 0x222B, 0x334 }, + { 0x2248, 0x2248, 0x335 }, + { 0x2260, 0x2260, 0x336 }, + { 0x2264, 0x2265, 0x337 }, + { 0xFB00, 0xFB04, 0x339 }, }; static const EpdKernClassEntry ubuntu_12_boldKernLeftClasses[] = { diff --git a/lib/EpdFont/builtinFonts/ubuntu_12_regular.h b/lib/EpdFont/builtinFonts/ubuntu_12_regular.h index e8de889b..df9fa07f 100644 --- a/lib/EpdFont/builtinFonts/ubuntu_12_regular.h +++ b/lib/EpdFont/builtinFonts/ubuntu_12_regular.h @@ -3,12 +3,12 @@ * name: ubuntu_12_regular * size: 12 * mode: 1-bit - * Command used: fontconvert.py ubuntu_12_regular 12 ../builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Regular.ttf --additional-intervals 0x05D0,0x05EA + * Command used: fontconvert.py ubuntu_12_regular 12 ../builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf ../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-Regular.ttf ../builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-Regular.ttf --additional-intervals 0x05D0,0x05EA */ #pragma once #include "EpdFontData.h" -static const uint8_t ubuntu_12_regularBitmaps[22033] = { +static const uint8_t ubuntu_12_regularBitmaps[25740] = { 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE0, 0x01, 0xDE, 0x70, 0xF7, 0xF7, 0xF7, 0x67, 0x67, 0x67, 0x0E, 0x18, 0x1C, 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xC3, 0x9F, 0xFF, 0xFF, 0xFF, 0x8E, 0x38, 0x1C, 0x70, 0x30, 0xE3, 0xFF, 0xFF, 0xFF, 0xF3, 0x8E, 0x07, 0x1C, 0x0E, 0x38, 0x38, 0x60, 0x71, @@ -1307,86 +1307,317 @@ static const uint8_t ubuntu_12_regularBitmaps[22033] = { 0xC7, 0xE3, 0xC7, 0xE3, 0x87, 0xE3, 0x87, 0xEF, 0x87, 0xFF, 0x07, 0xFE, 0x07, 0x70, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x3C, 0x3C, 0x1F, 0xF8, 0x0F, 0xF0, 0x7F, 0xFC, 0x7F, 0xFE, 0x1C, 0x1E, 0x1C, 0x0F, 0x1C, 0x07, 0x1C, 0x07, 0x1C, 0x07, 0x1C, 0x07, 0x1C, 0x07, 0x1C, 0x07, 0x1C, 0x07, 0x1C, - 0x07, 0x1C, 0x07, 0x7C, 0x07, 0x78, 0x07, 0x06, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x70, 0x1C, 0xF0, 0x78, 0xE0, 0xE1, 0xE3, 0xC1, 0xEF, 0x01, - 0xDC, 0x03, 0xF8, 0x03, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, - 0x00, 0xE0, 0x01, 0xC0, 0x0C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0x7F, 0x07, 0x70, 0x77, 0x0E, 0x78, 0xE3, 0x8E, 0x38, 0xC1, 0xDC, 0x1D, 0xC1, 0xF8, 0x0F, - 0x80, 0xF8, 0x07, 0x00, 0x70, 0x07, 0x09, 0xE0, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, - 0x87, 0x37, 0x8C, 0x7B, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x00, 0x00, - 0x30, 0x37, 0xEC, 0xDB, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x00, 0x00, 0x61, 0x83, 0xF6, 0x66, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x18, 0x30, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF0, - 0x7F, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF0, 0x33, 0x9D, 0xEE, 0x70, 0x7B, 0xDC, 0xE7, 0x30, 0x7B, - 0xDC, 0xE7, 0x30, 0x33, 0xB9, 0xDD, 0xDE, 0xEE, 0x77, 0x38, 0x7B, 0xBD, 0xDC, 0xEE, 0x77, 0x73, - 0x38, 0x7B, 0xBD, 0xDC, 0xEE, 0x77, 0x73, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0xFF, - 0xDF, 0xF8, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, - 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0xFF, 0xDF, 0xF8, 0x30, - 0x06, 0x00, 0xC0, 0x18, 0x03, 0x07, 0xFE, 0xFF, 0xC1, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, - 0x00, 0x60, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, 0xF0, 0x70, 0x77, 0x87, 0x83, 0xFC, 0x1C, 0x1C, - 0x3E, 0x07, 0x00, 0x03, 0xF8, 0x70, 0x00, 0x3D, 0xC3, 0x80, 0x01, 0xC6, 0x38, 0x00, 0x0E, 0x3B, - 0xC0, 0x00, 0x71, 0xDC, 0x00, 0x03, 0x8D, 0xC0, 0x00, 0x1E, 0xEE, 0xF8, 0x7C, 0x7F, 0xEF, 0xE7, - 0xF1, 0xF7, 0xF7, 0x3B, 0x80, 0x77, 0x1B, 0x8E, 0x07, 0xB8, 0xFC, 0x70, 0x39, 0xC7, 0xE3, 0x83, - 0x8E, 0x37, 0x1C, 0x1C, 0x7B, 0x9D, 0xC1, 0xC1, 0xFC, 0xFE, 0x0E, 0x07, 0xC3, 0xE0, 0x0C, 0x38, - 0xF1, 0xC7, 0x8E, 0x1E, 0x1C, 0x3C, 0x38, 0x30, 0xC3, 0x87, 0x1E, 0x38, 0xF3, 0x9E, 0x73, 0x8C, - 0x00, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x00, - 0x38, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x00, 0x3E, 0x3F, 0x9D, - 0xDC, 0x6E, 0x3F, 0x1F, 0x8C, 0xEE, 0x7F, 0x1F, 0x00, 0x07, 0x07, 0x87, 0xC7, 0xE7, 0x73, 0x3B, - 0xFF, 0xFF, 0x07, 0x03, 0x80, 0x7E, 0xFD, 0x87, 0xEF, 0xE3, 0xC1, 0xE7, 0xFF, 0xF8, 0x0F, 0x1F, - 0x9F, 0x0F, 0xC7, 0xF3, 0xB9, 0x8E, 0xEE, 0x7F, 0x1F, 0x00, 0x7F, 0x3F, 0x81, 0xC1, 0xC0, 0xE0, - 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x00, 0x3E, 0x3F, 0x9D, 0xCE, 0xE7, 0xE3, 0xF9, 0x8D, 0xEE, 0x7F, - 0x1F, 0x00, 0x3E, 0x3F, 0x9D, 0xDC, 0x67, 0xF1, 0xF8, 0x1C, 0x3E, 0x7E, 0x3C, 0x00, 0x3E, 0x3F, - 0x9D, 0xDC, 0x6E, 0x3F, 0x1F, 0x8C, 0xEE, 0x7F, 0x1F, 0x00, 0x3B, 0xFF, 0xF1, 0x8C, 0x63, 0x18, - 0xC0, 0x7E, 0x7F, 0x67, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0x7F, 0x7F, 0x7E, 0x7E, 0x6F, 0x3E, 0x3E, - 0x0F, 0x07, 0x67, 0x7F, 0x7E, 0x07, 0x07, 0x87, 0xC7, 0xE7, 0x73, 0x3B, 0xFF, 0xFF, 0x07, 0x03, - 0x80, 0x7E, 0xFD, 0x87, 0xEF, 0xE3, 0xC1, 0xE7, 0xFF, 0xF8, 0x0F, 0x1F, 0x9F, 0x0F, 0xC7, 0xF3, - 0xB9, 0x8E, 0xEE, 0x7F, 0x1F, 0x00, 0x7F, 0x3F, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, - 0x1C, 0x00, 0x3E, 0x3F, 0x9D, 0xCE, 0xE7, 0xE3, 0xF9, 0x8D, 0xEE, 0x7F, 0x1F, 0x00, 0x3E, 0x3F, - 0x9D, 0xDC, 0x67, 0xF1, 0xF8, 0x1C, 0x3E, 0x7E, 0x3C, 0x00, 0xFF, 0xC7, 0xFF, 0xE7, 0xE0, 0xE7, - 0xE0, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, - 0xE6, 0x07, 0xE6, 0x1F, 0xE7, 0xFE, 0xE7, 0xFC, 0x07, 0xF8, 0x7F, 0x87, 0xCC, 0x38, 0x03, 0x80, - 0x7F, 0xF3, 0xFF, 0x87, 0x00, 0x38, 0x07, 0xFE, 0x3F, 0xF0, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x7C, - 0x61, 0xFF, 0x07, 0xF8, 0xFF, 0xFF, 0xFF, 0xC1, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xF0, 0x1F, 0x83, - 0xF0, 0x7F, 0x03, 0xF8, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x3F, 0x81, 0xFC, 0x00, 0xE0, 0x07, 0x00, - 0x1F, 0xC0, 0x7F, 0xC1, 0x8F, 0x00, 0x1C, 0x00, 0x71, 0xFF, 0xF7, 0xFF, 0xC0, 0xF8, 0x07, 0xC0, - 0x7C, 0x07, 0xFF, 0xDF, 0xFF, 0x38, 0x00, 0xE0, 0x03, 0xC7, 0x0F, 0xFE, 0x0F, 0xF0, 0xFF, 0xFF, - 0xFF, 0xC0, 0xF0, 0x03, 0x8F, 0xFF, 0x7F, 0xF8, 0x07, 0x00, 0xF8, 0xFF, 0x87, 0xF0, 0x1E, 0x00, - 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x7F, 0x83, 0xFE, 0x18, 0xF8, 0x01, - 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC3, 0xFF, 0x3F, 0xFB, 0xE7, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0x70, - 0x3B, 0x81, 0xDC, 0x1C, 0xFB, 0xE3, 0xFE, 0x0F, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0x67, 0x00, 0x73, 0x80, 0x38, 0xE0, 0x38, 0x70, 0x1C, 0x38, 0x1C, 0x0E, 0x0E, 0x07, - 0x07, 0x03, 0xC7, 0x00, 0xE3, 0x80, 0x71, 0xC0, 0x3D, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, - 0xFF, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, - 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, - 0x0F, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x80, - 0x1C, 0x01, 0xE0, 0x1E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3F, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x0E, - 0x00, 0x70, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x70, - 0x00, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE1, 0xE1, 0xC7, 0xC3, 0x0F, 0xCE, 0x03, 0x9C, 0x03, 0xB8, 0x07, - 0x60, 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0xF9, 0xFF, 0xF7, 0x7D, 0xF8, 0xE3, - 0x77, 0xDD, 0xFF, 0xF3, 0xEF, 0x80, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x1C, 0x07, 0x01, 0xC0, 0x70, - 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, - 0x1F, 0x0F, 0x83, 0xC0, 0x7C, 0x3F, 0xF7, 0xEF, 0xFC, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x3F, 0xF7, - 0xEF, 0xFC, 0x3E, 0x00, 0xC0, 0x1C, 0x01, 0xCF, 0xFF, 0xFF, 0xF0, 0x70, 0x07, 0x00, 0xE0, 0xFF, - 0xFF, 0xFF, 0x38, 0x03, 0x80, 0x30, 0x00, 0x00, 0x70, 0x1F, 0x0F, 0xE3, 0xF8, 0xFC, 0x0F, 0x00, - 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0F, - 0x80, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0x03, 0xF0, 0xFC, 0x7F, 0x0F, 0x80, 0xE0, 0x00, 0x00, - 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0x1F, 0xDF, 0xCF, 0xFF, 0x33, 0xCB, 0x80, 0xE0, 0xE0, 0x78, - 0x38, 0x1C, 0x0F, 0xF7, 0xFB, 0xFD, 0xFE, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, - 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x00, - 0x3F, 0x03, 0xFB, 0xFC, 0x9F, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xFD, 0xDF, 0xEE, 0xE0, 0x77, 0x03, - 0xB8, 0x1D, 0xC0, 0xEE, 0x07, 0x70, 0x3B, 0x81, 0xDC, 0x0E, 0xE0, 0x77, 0x03, 0xB8, 0x1C, 0x3F, - 0x71, 0xFD, 0xCF, 0x27, 0x38, 0x1C, 0xE0, 0x73, 0x81, 0xCF, 0xF7, 0x3F, 0xDC, 0xE0, 0x73, 0x81, - 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0x7B, 0x80, 0xFE, 0x01, - 0xC0, 0x3F, 0x1F, 0x80, 0xFE, 0x7F, 0x3B, 0xCC, 0xF2, 0x77, 0x01, 0xC0, 0x0E, 0x07, 0x80, 0x1C, - 0x0E, 0x00, 0x3F, 0xDF, 0xE7, 0x7F, 0xBF, 0xCE, 0xE0, 0x70, 0x1D, 0xC0, 0xE0, 0x3B, 0x81, 0xC0, - 0x77, 0x03, 0x80, 0xEE, 0x07, 0x01, 0xDC, 0x0E, 0x03, 0xB8, 0x1C, 0x07, 0x70, 0x38, 0x0E, 0xE0, - 0x70, 0x1D, 0xC0, 0xE0, 0x3B, 0x81, 0xC0, 0x70, 0x3F, 0x1F, 0x9C, 0x7F, 0x3F, 0x9C, 0xF3, 0x3C, - 0x9C, 0xE0, 0x38, 0x1C, 0xE0, 0x78, 0x1C, 0xE0, 0x70, 0x1C, 0xFF, 0x7F, 0x9C, 0xFF, 0x7F, 0x9C, - 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, - 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1E, 0xE0, 0x70, 0x0F, 0xE0, 0x70, - 0x0F, + 0x07, 0x1C, 0x07, 0x7C, 0x07, 0x78, 0x07, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x7C, 0x00, + 0x7F, 0x00, 0x3B, 0x80, 0x39, 0xC0, 0x1C, 0x70, 0x1E, 0x38, 0x0E, 0x1E, 0x07, 0x07, 0x07, 0xFF, + 0x83, 0xFF, 0xE3, 0xFF, 0xF1, 0xC0, 0x38, 0xE0, 0x1E, 0xF0, 0x07, 0x70, 0x03, 0xC0, 0x00, 0x00, + 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x1E, 0x0F, 0xF1, 0xFF, 0x00, 0xE0, 0x1C, 0x01, + 0xCF, 0xFB, 0xFF, 0xF1, 0xFC, 0x1F, 0x83, 0xF0, 0x7F, 0xFE, 0xFF, 0xC3, 0xC0, 0x20, 0x0E, 0x01, + 0xC0, 0x38, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0C, 0x00, + 0x07, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xFC, 0x00, 0xEE, 0x00, 0xE7, 0x00, 0x71, + 0xC0, 0x78, 0xE0, 0x38, 0x78, 0x1C, 0x1C, 0x1F, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xC7, 0x00, 0xE3, + 0x80, 0x7B, 0xC0, 0x1D, 0xC0, 0x0F, 0x1E, 0x03, 0xE0, 0x1C, 0x07, 0x80, 0xE0, 0x3C, 0x1F, 0xE3, + 0xFE, 0x01, 0xC0, 0x38, 0x03, 0x9F, 0xF7, 0xFF, 0xE3, 0xF8, 0x3F, 0x07, 0xE0, 0xFF, 0xFD, 0xFF, + 0x87, 0x80, 0x00, 0x06, 0x00, 0x07, 0x80, 0x03, 0x80, 0x33, 0x80, 0x3D, 0x80, 0x3F, 0x00, 0x1D, + 0xC0, 0x08, 0x40, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x7F, 0x00, 0x3B, 0x80, + 0x39, 0xC0, 0x1C, 0x70, 0x1E, 0x38, 0x0E, 0x1E, 0x07, 0x07, 0x07, 0xFF, 0x83, 0xFF, 0xE3, 0xFF, + 0xF1, 0xC0, 0x38, 0xE0, 0x1E, 0xF0, 0x07, 0x70, 0x03, 0xC0, 0x00, 0x00, 0x01, 0x80, 0x1E, 0x00, + 0xE0, 0xEE, 0x0F, 0xE0, 0xFE, 0x07, 0x70, 0x10, 0x00, 0xF0, 0x1F, 0xE0, 0xFF, 0x80, 0x1C, 0x00, + 0xE0, 0x03, 0x87, 0xFC, 0x7F, 0xE7, 0x8F, 0x38, 0x39, 0xC1, 0xCE, 0x0E, 0x7F, 0xF1, 0xFF, 0x81, + 0xE0, 0x00, 0x60, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x37, 0x00, 0x3D, 0x80, 0x3F, 0x00, 0x1D, 0xC0, + 0x08, 0x40, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x7F, 0x00, 0x3B, 0x80, 0x39, + 0xC0, 0x1C, 0x70, 0x1E, 0x38, 0x0E, 0x1E, 0x07, 0x07, 0x07, 0xFF, 0x83, 0xFF, 0xE3, 0xFF, 0xF1, + 0xC0, 0x38, 0xE0, 0x1E, 0xF0, 0x07, 0x70, 0x03, 0xC0, 0x00, 0x00, 0x60, 0x1E, 0x01, 0xE0, 0xFC, + 0x3F, 0x8F, 0xE1, 0xDC, 0x10, 0x03, 0xC1, 0xFE, 0x3F, 0xE0, 0x1C, 0x03, 0x80, 0x39, 0xFF, 0x7F, + 0xFE, 0x3F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xDF, 0xF8, 0x78, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0x80, 0x19, 0x80, 0x1E, 0xC0, 0x1F, 0x80, 0x0E, 0xE0, 0x04, 0x20, 0x00, 0xE0, 0x00, + 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, 0x1C, 0xE0, 0x0E, 0x38, 0x0F, 0x1C, + 0x07, 0x0F, 0x03, 0x83, 0x83, 0xFF, 0xC1, 0xFF, 0xF1, 0xFF, 0xF8, 0xE0, 0x1C, 0x70, 0x0F, 0x78, + 0x03, 0xB8, 0x01, 0xE0, 0x01, 0xC0, 0x1F, 0x01, 0xF0, 0x0F, 0x0E, 0xE1, 0xFC, 0x3F, 0x83, 0xB8, + 0x10, 0x01, 0xE0, 0x7F, 0x87, 0xFC, 0x01, 0xC0, 0x1C, 0x00, 0xE3, 0xFE, 0x7F, 0xEF, 0x1E, 0xE0, + 0xEE, 0x0E, 0xE0, 0xEF, 0xFE, 0x7F, 0xE0, 0xF0, 0x07, 0xB8, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x1E, 0x00, 0x1F, 0x80, 0x0E, 0xE0, 0x04, 0x20, 0x00, 0xE0, 0x00, 0xF0, 0x00, + 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, 0x1C, 0xE0, 0x0E, 0x38, 0x0F, 0x1C, 0x07, 0x0F, + 0x03, 0x83, 0x83, 0xFF, 0xC1, 0xFF, 0xF1, 0xFF, 0xF8, 0xE0, 0x1C, 0x70, 0x0F, 0x78, 0x03, 0xB8, + 0x01, 0xE0, 0x1C, 0xC7, 0xF9, 0xFE, 0x00, 0x00, 0xE0, 0x3E, 0x0F, 0xE1, 0xDC, 0x10, 0x03, 0xC1, + 0xFE, 0x3F, 0xE0, 0x1C, 0x03, 0x80, 0x39, 0xFF, 0x7F, 0xFE, 0x3F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, + 0xDF, 0xF8, 0x78, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x21, 0x00, + 0x07, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xFC, 0x00, 0xEE, 0x00, 0xE7, 0x00, 0x71, + 0xC0, 0x78, 0xE0, 0x38, 0x78, 0x1C, 0x1C, 0x1F, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xC7, 0x00, 0xE3, + 0x80, 0x7B, 0xC0, 0x1D, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x00, 0x01, 0xC0, 0x7C, 0x1F, 0xC3, 0xB8, 0x20, 0x07, 0x83, 0xFC, 0x7F, 0xC0, 0x38, 0x07, + 0x00, 0x73, 0xFE, 0xFF, 0xFC, 0x7F, 0x07, 0xE0, 0xFC, 0x1F, 0xFF, 0xBF, 0xF0, 0xF0, 0x08, 0x03, + 0x80, 0x70, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x35, + 0x80, 0x19, 0xC0, 0x0F, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x78, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x07, 0x1C, 0x07, 0x8E, 0x03, 0x87, 0x81, 0xC1, + 0xC1, 0xFF, 0xE0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x0E, 0x38, 0x07, 0xBC, 0x01, 0xDC, 0x00, 0xF0, + 0x00, 0x00, 0x70, 0x0E, 0x03, 0x80, 0xE0, 0x6B, 0x0E, 0xE0, 0xFC, 0x0F, 0x00, 0x00, 0x78, 0x3F, + 0xC7, 0xFC, 0x03, 0x80, 0x70, 0x07, 0x3F, 0xEF, 0xFF, 0xC7, 0xF0, 0x7E, 0x0F, 0xC1, 0xFF, 0xFB, + 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x35, 0x80, + 0x19, 0xC0, 0x0F, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x07, 0x1C, 0x07, 0x8E, 0x03, 0x87, 0x81, 0xC1, 0xC1, + 0xFF, 0xE0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x0E, 0x38, 0x07, 0xBC, 0x01, 0xDC, 0x00, 0xF0, 0x00, + 0x07, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x6B, 0x0E, 0xE0, 0xFC, 0x0F, 0x00, 0x00, 0x78, 0x3F, 0xC7, + 0xFC, 0x03, 0x80, 0x70, 0x07, 0x3F, 0xEF, 0xFF, 0xC7, 0xF0, 0x7E, 0x0F, 0xC1, 0xFF, 0xFB, 0xFF, + 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7B, 0x00, 0x33, 0x80, 0x1F, + 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x80, + 0x1D, 0xC0, 0x1C, 0xE0, 0x0E, 0x38, 0x0F, 0x1C, 0x07, 0x0F, 0x03, 0x83, 0x83, 0xFF, 0xC1, 0xFF, + 0xF1, 0xFF, 0xF8, 0xE0, 0x1C, 0x70, 0x0F, 0x78, 0x03, 0xB8, 0x01, 0xE0, 0x04, 0x03, 0xE0, 0x7C, + 0x03, 0x80, 0xE0, 0x7B, 0x0E, 0xE0, 0xFC, 0x0F, 0x00, 0x00, 0x78, 0x3F, 0xC7, 0xFC, 0x03, 0x80, + 0x70, 0x07, 0x3F, 0xEF, 0xFF, 0xC7, 0xF0, 0x7E, 0x0F, 0xC1, 0xFF, 0xFB, 0xFF, 0x0F, 0x00, 0x00, + 0x00, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0x9C, 0x00, 0x63, 0x00, 0x33, 0x80, 0x1F, 0x80, 0x07, 0x80, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, 0x1C, + 0xE0, 0x0E, 0x38, 0x0F, 0x1C, 0x07, 0x0F, 0x03, 0x83, 0x83, 0xFF, 0xC1, 0xFF, 0xF1, 0xFF, 0xF8, + 0xE0, 0x1C, 0x70, 0x0F, 0x78, 0x03, 0xB8, 0x01, 0xE0, 0x18, 0x87, 0xF9, 0xFE, 0x11, 0x83, 0x18, + 0x77, 0x07, 0xE0, 0x78, 0x00, 0x03, 0xC1, 0xFE, 0x3F, 0xE0, 0x1C, 0x03, 0x80, 0x39, 0xFF, 0x7F, + 0xFE, 0x3F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xDF, 0xF8, 0x78, 0x06, 0x30, 0x03, 0x38, 0x01, 0xF8, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF8, 0x01, + 0xDC, 0x01, 0xCE, 0x00, 0xE3, 0x80, 0xF1, 0xC0, 0x70, 0xF0, 0x38, 0x38, 0x3F, 0xFC, 0x1F, 0xFF, + 0x1F, 0xFF, 0x8E, 0x01, 0xC7, 0x00, 0xF7, 0x80, 0x3B, 0x80, 0x1E, 0x00, 0x00, 0x01, 0x80, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x31, 0x87, 0x70, 0xFE, 0x07, 0x80, 0x00, 0x3C, 0x1F, 0xE3, + 0xFE, 0x01, 0xC0, 0x38, 0x03, 0x9F, 0xF7, 0xFF, 0xE3, 0xF8, 0x3F, 0x07, 0xE0, 0xFF, 0xFD, 0xFF, + 0x87, 0x80, 0x40, 0x1C, 0x03, 0x80, 0x70, 0xFF, 0xEF, 0xFE, 0xFF, 0xEE, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xFF, 0xCF, 0xFC, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0x1E, 0x01, 0xE0, 0x0C, 0x00, 0x07, 0x01, 0xFC, 0x3F, 0xE7, 0x8E, + 0xF0, 0xFE, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x00, 0xF0, 0x07, 0x82, 0x3F, 0xE1, 0xFE, 0x07, + 0x80, 0x60, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x04, 0x01, 0xF0, 0x1F, 0x00, 0x70, 0x0E, 0x00, 0x60, + 0xFF, 0xEF, 0xFE, 0xFF, 0xEE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xCF, 0xFC, 0xE0, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0x01, 0xF8, 0x03, 0x80, + 0x70, 0x06, 0x00, 0x70, 0x1F, 0xC3, 0xFE, 0x78, 0xEF, 0x0F, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, + 0xE0, 0x0F, 0x00, 0x78, 0x23, 0xFE, 0x1F, 0xE0, 0x78, 0x1C, 0xC3, 0xFC, 0x7F, 0x80, 0x00, 0x00, + 0x0F, 0xFE, 0xFF, 0xEF, 0xFE, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xFC, 0xFF, 0xCE, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x08, 0x03, 0xFC, 0x3F, + 0xC3, 0x38, 0x00, 0x00, 0x70, 0x1F, 0xC3, 0xFE, 0x78, 0xEF, 0x0F, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFE, 0xE0, 0x0F, 0x00, 0x78, 0x23, 0xFE, 0x1F, 0xE0, 0x78, 0x00, 0x30, 0x03, 0xC0, 0x1C, 0x1D, + 0xC1, 0xFC, 0x1F, 0x80, 0xEE, 0x06, 0x20, 0xFF, 0xE7, 0xFF, 0x3F, 0xF9, 0xC0, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFE, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, + 0x00, 0xFF, 0xF7, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x60, 0x03, 0x80, 0x1C, 0x06, 0xE0, 0x3D, 0x01, + 0xF8, 0x06, 0x70, 0x10, 0x80, 0x1C, 0x01, 0xFC, 0x0F, 0xF8, 0x78, 0xE3, 0xC3, 0xCE, 0x07, 0x3F, + 0xFC, 0xFF, 0xF3, 0xFF, 0x8E, 0x00, 0x3C, 0x00, 0x78, 0x20, 0xFF, 0x81, 0xFE, 0x01, 0xE0, 0x03, + 0x00, 0x78, 0x03, 0x80, 0xFC, 0x1E, 0xC3, 0xF0, 0x3B, 0x83, 0x10, 0xFF, 0xEF, 0xFE, 0xFF, 0xEE, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xCF, 0xFC, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x06, 0xE0, 0xF4, 0x1F, + 0x81, 0x9C, 0x10, 0x80, 0x70, 0x1F, 0xC3, 0xFE, 0x78, 0xEF, 0x0F, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFE, 0xE0, 0x0F, 0x00, 0x78, 0x23, 0xFE, 0x1F, 0xE0, 0x78, 0x00, 0x00, 0x3E, 0x01, 0xF0, 0x0F, + 0x0E, 0xE1, 0xEC, 0x3F, 0x03, 0xB8, 0x31, 0x0F, 0xFE, 0xFF, 0xEF, 0xFE, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0xFC, 0xFF, 0xCE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, + 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x07, 0x80, 0x2E, 0x00, 0xF0, 0x66, 0x07, 0xB0, 0x7E, 0x03, 0x38, + 0x10, 0x80, 0x38, 0x07, 0xF0, 0x7F, 0xC7, 0x8E, 0x78, 0x7B, 0x81, 0xDF, 0xFE, 0xFF, 0xF7, 0xFF, + 0x38, 0x01, 0xE0, 0x07, 0x82, 0x1F, 0xF0, 0x7F, 0x80, 0xF0, 0x3C, 0xC7, 0xFC, 0x7F, 0x80, 0x00, + 0x0E, 0x01, 0xE0, 0x3F, 0x03, 0xB8, 0x31, 0x0F, 0xFE, 0xFF, 0xEF, 0xFE, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0xFC, 0xFF, 0xCE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, + 0xFF, 0xFF, 0xF0, 0x00, 0x01, 0xEC, 0x3F, 0xC3, 0x38, 0x00, 0x00, 0x60, 0x0F, 0x01, 0xF8, 0x19, + 0xC1, 0x08, 0x07, 0x01, 0xFC, 0x3F, 0xE7, 0x8E, 0xF0, 0xFE, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, + 0x00, 0xF0, 0x07, 0x82, 0x3F, 0xE1, 0xFE, 0x07, 0x80, 0x00, 0x00, 0xE0, 0x1E, 0x03, 0xF0, 0x3B, + 0x83, 0x10, 0xFF, 0xEF, 0xFE, 0xFF, 0xEE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xCF, + 0xFC, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xC0, + 0x1E, 0x01, 0xE0, 0x0C, 0x00, 0x00, 0x00, 0x60, 0x0F, 0x01, 0xF8, 0x19, 0xC1, 0x08, 0x07, 0x01, + 0xFC, 0x3F, 0xE7, 0x8E, 0xF0, 0xFE, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x00, 0xF0, 0x07, 0x82, + 0x3F, 0xE1, 0xFE, 0x07, 0x80, 0x60, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x07, 0xBE, 0x77, 0x31, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0xF7, 0xCE, 0xF6, 0x01, 0xCE, 0x73, + 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x06, + 0x77, 0x70, 0x6F, 0xF6, 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x70, 0x6F, 0xF6, 0x03, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xE7, 0x80, 0x73, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, + 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3C, 0x7C, 0x3C, + 0x1F, 0xFE, 0x07, 0xFC, 0x00, 0x78, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x07, + 0x00, 0xFE, 0x0F, 0xF8, 0xF1, 0xEF, 0x07, 0x70, 0x3F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x03, 0xFC, + 0x1C, 0xF1, 0xE3, 0xFE, 0x0F, 0xE0, 0x1C, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x00, 0x00, + 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, 0xC0, 0x1F, 0xF8, 0x1F, + 0xFE, 0x1E, 0x0F, 0x9E, 0x01, 0xCE, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x0F, 0xC0, 0x07, + 0xE0, 0x03, 0xF8, 0x01, 0xDC, 0x00, 0xEE, 0x00, 0xF7, 0x80, 0xF1, 0xF0, 0xF0, 0x7F, 0xF8, 0x1F, + 0xF0, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x0F, 0x00, 0x60, 0x03, 0x80, 0x7F, 0x07, + 0xFC, 0x78, 0xF7, 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x81, 0xFE, 0x0E, 0x78, 0xF1, + 0xFF, 0x07, 0xF0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x0D, 0xC0, + 0x0F, 0xC0, 0x0F, 0xC0, 0x0E, 0xE0, 0x02, 0x10, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, + 0xF3, 0xC0, 0x39, 0xC0, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7F, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x1E, 0xF0, 0x1E, 0x3E, 0x1E, 0x0F, 0xFF, 0x03, 0xFE, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x80, 0x1E, 0x07, 0xF0, 0x3F, 0x81, 0xF8, 0x07, 0x70, 0x00, + 0x80, 0x1C, 0x01, 0xFC, 0x0F, 0xF8, 0x78, 0xF3, 0xC1, 0xCE, 0x07, 0xB8, 0x0E, 0xE0, 0x3B, 0x80, + 0xEE, 0x07, 0xBC, 0x1C, 0x78, 0xF0, 0xFF, 0x81, 0xFC, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x3C, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0xC0, 0x0E, 0xE0, 0x02, 0x10, 0x01, 0xF8, + 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x39, 0xC0, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF0, + 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x1E, 0xF0, 0x1E, 0x3E, 0x1E, + 0x0F, 0xFF, 0x03, 0xFE, 0x00, 0x3C, 0x00, 0x01, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x7E, 0x07, + 0xC0, 0x7E, 0x03, 0xB8, 0x00, 0x80, 0x38, 0x07, 0xF0, 0x7F, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x1F, 0xE0, 0xE7, 0x8F, 0x1F, 0xF0, 0x7F, 0x00, 0xE0, 0x00, 0x18, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xC0, 0x0D, 0xC0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0E, 0xE0, 0x02, + 0x10, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x39, 0xC0, 0x1F, 0xE0, 0x07, + 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x1E, 0xF0, + 0x1E, 0x3E, 0x1E, 0x0F, 0xFF, 0x03, 0xFE, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x0E, + 0xE0, 0xFE, 0x0F, 0xC0, 0x77, 0x00, 0x10, 0x07, 0x00, 0xFE, 0x0F, 0xF8, 0xF1, 0xEF, 0x07, 0x70, + 0x3F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x03, 0xFC, 0x1C, 0xF1, 0xE3, 0xFE, 0x0F, 0xE0, 0x1C, 0x00, + 0x01, 0x10, 0x03, 0xFC, 0x03, 0xFC, 0x00, 0x8C, 0x00, 0x0C, 0x00, 0x0F, 0x00, 0x0F, 0xC0, 0x0E, + 0xE0, 0x02, 0x10, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x39, 0xC0, 0x1F, + 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3B, 0x80, 0x1D, 0xC0, + 0x1E, 0xF0, 0x1E, 0x3E, 0x1E, 0x0F, 0xFF, 0x03, 0xFE, 0x00, 0x3C, 0x00, 0x0C, 0x40, 0xFF, 0x0F, + 0xF0, 0x20, 0x00, 0x70, 0x07, 0xC0, 0x7E, 0x03, 0xB8, 0x00, 0x80, 0x38, 0x07, 0xF0, 0x7F, 0xC7, + 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x1F, 0xE0, 0xE7, 0x8F, 0x1F, 0xF0, + 0x7F, 0x00, 0xE0, 0x00, 0x80, 0x00, 0xE0, 0x00, 0xF8, 0x00, 0xFE, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x0F, 0xC0, 0x1F, 0xF8, 0x1F, 0xFE, 0x1E, 0x0F, 0x9E, 0x01, 0xCE, 0x00, 0xFF, 0x00, 0x3F, 0x80, + 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF8, 0x01, 0xDC, 0x00, 0xEE, 0x00, 0xF7, 0x80, 0xF1, + 0xF0, 0xF0, 0x7F, 0xF8, 0x1F, 0xF0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x00, 0x00, 0x38, 0x03, 0xE0, 0x3F, 0x01, 0xDC, 0x00, 0x40, 0x1C, 0x03, 0xF8, 0x3F, 0xE3, + 0xC7, 0xBC, 0x1D, 0xC0, 0xFE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x0F, 0xF0, 0x73, 0xC7, 0x8F, 0xF8, + 0x3F, 0x80, 0x70, 0x03, 0x00, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x01, 0xC3, 0x80, 0x20, 0xE0, 0x3F, 0x38, 0x3F, 0xFE, 0x1F, 0xFF, 0x0F, 0x07, + 0xC7, 0x80, 0x71, 0xC0, 0x1E, 0xF0, 0x03, 0xBC, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x03, + 0xBC, 0x00, 0xE7, 0x00, 0x39, 0xC0, 0x1E, 0x78, 0x0F, 0x0F, 0x87, 0x81, 0xFF, 0xE0, 0x3F, 0xE0, + 0x01, 0xE0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x1C, 0x10, 0x70, 0x71, 0xC7, + 0xFE, 0x3F, 0xF9, 0xE3, 0xCF, 0x07, 0x38, 0x1E, 0xE0, 0x3B, 0x80, 0xEE, 0x03, 0xB8, 0x1E, 0xF0, + 0x71, 0xE3, 0xC3, 0xFE, 0x07, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE3, 0x80, 0x10, 0xE0, 0x3F, 0x38, 0x3F, 0xFE, 0x1F, 0xFF, 0x0F, 0x07, 0xC7, 0x80, + 0x71, 0xC0, 0x1E, 0xF0, 0x03, 0xBC, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x03, 0xBC, 0x00, + 0xE7, 0x00, 0x39, 0xC0, 0x1E, 0x78, 0x0F, 0x0F, 0x87, 0x81, 0xFF, 0xE0, 0x3F, 0xE0, 0x01, 0xE0, + 0x00, 0x08, 0x00, 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x1C, 0x08, 0x70, 0x71, 0xC7, 0xFE, 0x3F, + 0xF9, 0xE3, 0xCF, 0x07, 0x38, 0x1E, 0xE0, 0x3B, 0x80, 0xEE, 0x03, 0xB8, 0x1E, 0xF0, 0x71, 0xE3, + 0xC3, 0xFE, 0x07, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0x80, 0x01, + 0xE3, 0x80, 0x70, 0xE0, 0x3F, 0x38, 0x3F, 0xFE, 0x1F, 0xFF, 0x0F, 0x07, 0xC7, 0x80, 0x71, 0xC0, + 0x1E, 0xF0, 0x03, 0xBC, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x03, 0xBC, 0x00, 0xE7, 0x00, + 0x39, 0xC0, 0x1E, 0x78, 0x0F, 0x0F, 0x87, 0x81, 0xFF, 0xE0, 0x3F, 0xE0, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x3E, 0x00, 0x38, 0x01, 0xE7, 0x06, 0x1C, 0x1C, 0x71, 0xFF, 0x8F, 0xFE, 0x78, 0xF3, 0xC1, + 0xCE, 0x07, 0xB8, 0x0E, 0xE0, 0x3B, 0x80, 0xEE, 0x07, 0xBC, 0x1C, 0x78, 0xF0, 0xFF, 0x81, 0xFC, + 0x01, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x11, 0xCE, 0x00, 0x03, 0x80, 0xFC, 0xE0, + 0xFF, 0xF8, 0x7F, 0xFC, 0x3C, 0x1F, 0x1E, 0x01, 0xC7, 0x00, 0x7B, 0xC0, 0x0E, 0xF0, 0x03, 0xB8, + 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0x9C, 0x00, 0xE7, 0x00, 0x79, 0xE0, 0x3C, 0x3E, + 0x1E, 0x07, 0xFF, 0x80, 0xFF, 0x80, 0x07, 0x80, 0x00, 0x40, 0x7F, 0x83, 0xFC, 0x0C, 0x67, 0x00, + 0x1C, 0x1C, 0x71, 0xFF, 0x8F, 0xFE, 0x78, 0xF3, 0xC1, 0xCE, 0x07, 0xB8, 0x0E, 0xE0, 0x3B, 0x80, + 0xEE, 0x07, 0xBC, 0x1C, 0x78, 0xF0, 0xFF, 0x81, 0xFC, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xE0, + 0x00, 0x38, 0x0F, 0xCE, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC1, 0xF1, 0xE0, 0x1C, 0x70, 0x07, 0xBC, + 0x00, 0xEF, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x03, 0xB8, 0x00, 0xEF, 0x00, 0x39, 0xC0, 0x0E, 0x70, + 0x07, 0x9E, 0x03, 0xC3, 0xE1, 0xE0, 0x7F, 0xF8, 0x0F, 0xF8, 0x00, 0x78, 0x00, 0x0C, 0x00, 0x07, + 0x00, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x1C, 0x00, 0x70, 0x71, 0xC7, 0xFE, 0x3F, 0xF9, 0xE3, + 0xCF, 0x07, 0x38, 0x1E, 0xE0, 0x3B, 0x80, 0xEE, 0x03, 0xB8, 0x1E, 0xF0, 0x71, 0xE3, 0xC3, 0xFE, + 0x07, 0xF0, 0x07, 0x00, 0x18, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0xE0, 0x1B, 0x80, 0xFE, 0x03, + 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, + 0xE0, 0x3B, 0x80, 0xEF, 0x03, 0x9E, 0x3E, 0x7F, 0xF0, 0xFF, 0x80, 0x78, 0x00, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xF0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0x70, 0x77, 0x07, 0x78, 0x73, 0xFF, 0x3F, 0xF0, 0x78, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, + 0x00, 0x3E, 0x00, 0xF8, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x0E, 0x01, 0xB8, 0x0F, 0xE0, 0x3F, 0x80, + 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, + 0xB8, 0x0E, 0xF0, 0x39, 0xE3, 0xE7, 0xFF, 0x0F, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0xF8, 0x03, 0x80, + 0x70, 0x06, 0x00, 0x00, 0xF0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0x70, 0x77, 0x07, 0x78, 0x73, 0xFF, 0x3F, 0xF0, 0x78, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xF0, 0x00, + 0xF0, 0x00, 0x70, 0x38, 0x30, 0x1F, 0x80, 0x7D, 0xC0, 0x7E, 0xE0, 0x3C, 0x70, 0x1E, 0x38, 0x0F, + 0x1C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0x80, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0x70, 0x1E, 0x38, + 0x0E, 0x1C, 0x07, 0x0F, 0x03, 0x83, 0xC7, 0xC1, 0xFF, 0xC0, 0x7F, 0xC0, 0x07, 0x80, 0x00, 0x01, + 0x00, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0xE0, 0x81, 0xC0, 0x07, 0xF8, 0x3E, 0xF0, 0x79, + 0xE0, 0xE3, 0xC1, 0xC7, 0x83, 0x8F, 0x07, 0x1E, 0x0E, 0x3C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0xF0, + 0xE0, 0xFF, 0xC1, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, + 0x70, 0x38, 0x08, 0x1F, 0x80, 0x7D, 0xC0, 0x7E, 0xE0, 0x3C, 0x70, 0x1E, 0x38, 0x0F, 0x1C, 0x07, + 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0x80, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0x70, 0x1E, 0x38, 0x0E, 0x1C, + 0x07, 0x0F, 0x03, 0x83, 0xC7, 0xC1, 0xFF, 0xC0, 0x7F, 0xC0, 0x07, 0x80, 0x00, 0x08, 0x00, 0x38, + 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0xE0, 0x41, 0xC0, 0x07, 0xF8, 0x3E, 0xF0, 0x79, 0xE0, 0xE3, + 0xC1, 0xC7, 0x83, 0x8F, 0x07, 0x1E, 0x0E, 0x3C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0xF0, 0xE0, 0xFF, + 0xC1, 0xFF, 0x80, 0x78, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x38, + 0x38, 0x1F, 0x80, 0x7D, 0xC0, 0x7E, 0xE0, 0x3C, 0x70, 0x1E, 0x38, 0x0F, 0x1C, 0x07, 0x8E, 0x03, + 0xC7, 0x01, 0xE3, 0x80, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0x70, 0x1E, 0x38, 0x0E, 0x1C, 0x07, 0x0F, + 0x03, 0x83, 0xC7, 0xC1, 0xFF, 0xC0, 0x7F, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x0E, + 0x00, 0x38, 0x70, 0x60, 0xE0, 0x03, 0xFC, 0x1F, 0x78, 0x3C, 0xF0, 0x71, 0xE0, 0xE3, 0xC1, 0xC7, + 0x83, 0x8F, 0x07, 0x1E, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x78, 0x70, 0x7F, 0xE0, 0xFF, 0xC0, 0x3C, + 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x02, 0x30, 0x70, 0x00, 0x3F, 0x00, 0xFB, 0x80, 0xFD, + 0xC0, 0x78, 0xE0, 0x3C, 0x70, 0x1E, 0x38, 0x0F, 0x1C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0x80, + 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0x70, 0x1C, 0x38, 0x0E, 0x1E, 0x07, 0x07, 0x8F, 0x83, 0xFF, 0x80, + 0xFF, 0x80, 0x0F, 0x00, 0x08, 0x40, 0x3F, 0x80, 0xFF, 0x01, 0x9C, 0x70, 0x00, 0xE0, 0x03, 0xFC, + 0x1F, 0x78, 0x3C, 0xF0, 0x71, 0xE0, 0xE3, 0xC1, 0xC7, 0x83, 0x8F, 0x07, 0x1E, 0x0E, 0x1C, 0x1C, + 0x38, 0x38, 0x78, 0x70, 0x7F, 0xE0, 0xFF, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0xFC, 0x03, 0xEE, 0x03, 0xF7, 0x01, 0xE3, 0x80, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0x70, 0x1E, 0x38, + 0x0F, 0x1C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0x80, 0xF1, 0xC0, 0x70, 0xE0, 0x38, 0x78, 0x1C, + 0x1E, 0x3E, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x7F, 0x83, 0xEF, 0x07, 0x9E, 0x0E, 0x3C, 0x1C, 0x78, + 0x38, 0xF0, 0x71, 0xE0, 0xE3, 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0F, 0x0E, 0x0F, 0xFC, 0x1F, 0xF8, + 0x07, 0x80, 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x06, 0x00, 0x1E, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x70, 0x1C, 0xF0, 0x78, 0xE0, 0xE1, 0xE3, + 0xC1, 0xEF, 0x01, 0xDC, 0x03, 0xF8, 0x03, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x0C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x07, 0x70, 0x77, 0x0E, 0x78, 0xE3, 0x8E, 0x38, 0xC1, 0xDC, 0x1D, + 0xC1, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, 0x70, 0x07, 0x09, 0xE0, 0xFC, 0x0F, 0x80, 0xE0, 0x0F, + 0xE0, 0x3D, 0xC0, 0x73, 0xC1, 0xE3, 0x83, 0x87, 0x8E, 0x07, 0x9C, 0x07, 0x70, 0x0F, 0xE0, 0x0F, + 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x7F, 0x07, 0x70, 0x77, 0x0E, + 0x78, 0xE3, 0x8E, 0x39, 0xE1, 0xDC, 0x1D, 0xC1, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, 0x70, 0x0E, + 0x2F, 0xE7, 0xFC, 0x7F, 0x87, 0x00, 0x00, 0x0F, 0x80, 0x1F, 0x00, 0x0E, 0x00, 0x38, 0x00, 0x60, + 0x38, 0x03, 0xF8, 0x0F, 0x70, 0x1C, 0xF0, 0x78, 0xE0, 0xE1, 0xE3, 0x81, 0xE7, 0x01, 0xDC, 0x03, + 0xF8, 0x03, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, + 0x01, 0xC0, 0x0F, 0x00, 0xF8, 0x03, 0x80, 0x70, 0x06, 0x00, 0x00, 0xE0, 0x7F, 0x07, 0x70, 0x77, + 0x0E, 0x78, 0xE3, 0x8E, 0x39, 0xE1, 0xDC, 0x1D, 0xC1, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, 0x70, + 0x0E, 0x0F, 0xE0, 0xFC, 0x0F, 0x80, 0x06, 0x30, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x1C, + 0x01, 0xFC, 0x07, 0xB8, 0x0E, 0x78, 0x3C, 0x70, 0x70, 0xF1, 0xC0, 0xF3, 0x80, 0xEE, 0x01, 0xFC, + 0x01, 0xF0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0xE0, 0x00, 0x08, 0x41, 0xFE, 0x3F, 0xC3, 0x38, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x07, 0x70, 0x77, + 0x0E, 0x78, 0xE3, 0x8E, 0x39, 0xE1, 0xDC, 0x1D, 0xC1, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, 0x70, + 0x0E, 0x0F, 0xE0, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x87, 0x37, 0x8C, 0x7B, 0xF3, + 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x00, 0x00, 0x30, 0x37, 0xEC, 0xDB, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x00, 0x61, 0x83, 0xF6, + 0x66, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0xFF, 0xFF, + 0x7F, 0xFD, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, 0xDF, 0xFF, + 0xFF, 0xF0, 0x33, 0x9D, 0xEE, 0x70, 0x7B, 0xDC, 0xE7, 0x30, 0x7B, 0xDC, 0xE7, 0x30, 0x33, 0xB9, + 0xDD, 0xDE, 0xEE, 0x77, 0x38, 0x7B, 0xBD, 0xDC, 0xEE, 0x77, 0x73, 0x38, 0x7B, 0xBD, 0xDC, 0xEE, + 0x77, 0x73, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0xFF, 0xDF, 0xF8, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0xFF, 0xDF, 0xF8, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x07, 0xFE, 0xFF, 0xC1, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x7D, 0xFF, 0xFF, + 0xFF, 0xEF, 0x80, 0xF0, 0x70, 0x77, 0x87, 0x83, 0xFC, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x03, 0xF8, + 0x70, 0x00, 0x3D, 0xC3, 0x80, 0x01, 0xC6, 0x38, 0x00, 0x0E, 0x3B, 0xC0, 0x00, 0x71, 0xDC, 0x00, + 0x03, 0x8D, 0xC0, 0x00, 0x1E, 0xEE, 0xF8, 0x7C, 0x7F, 0xEF, 0xE7, 0xF1, 0xF7, 0xF7, 0x3B, 0x80, + 0x77, 0x1B, 0x8E, 0x07, 0xB8, 0xFC, 0x70, 0x39, 0xC7, 0xE3, 0x83, 0x8E, 0x37, 0x1C, 0x1C, 0x7B, + 0x9D, 0xC1, 0xC1, 0xFC, 0xFE, 0x0E, 0x07, 0xC3, 0xE0, 0x0C, 0x38, 0xF1, 0xC7, 0x8E, 0x1E, 0x1C, + 0x3C, 0x38, 0x30, 0xC3, 0x87, 0x1E, 0x38, 0xF3, 0x9E, 0x73, 0x8C, 0x00, 0x00, 0x38, 0x03, 0x80, + 0x1C, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x01, + 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x00, 0x3E, 0x3F, 0x9D, 0xDC, 0x6E, 0x3F, 0x1F, 0x8C, + 0xEE, 0x7F, 0x1F, 0x00, 0x07, 0x07, 0x87, 0xC7, 0xE7, 0x73, 0x3B, 0xFF, 0xFF, 0x07, 0x03, 0x80, + 0x7E, 0xFD, 0x87, 0xEF, 0xE3, 0xC1, 0xE7, 0xFF, 0xF8, 0x0F, 0x1F, 0x9F, 0x0F, 0xC7, 0xF3, 0xB9, + 0x8E, 0xEE, 0x7F, 0x1F, 0x00, 0x7F, 0x3F, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x1C, + 0x00, 0x3E, 0x3F, 0x9D, 0xCE, 0xE7, 0xE3, 0xF9, 0x8D, 0xEE, 0x7F, 0x1F, 0x00, 0x3E, 0x3F, 0x9D, + 0xDC, 0x67, 0xF1, 0xF8, 0x1C, 0x3E, 0x7E, 0x3C, 0x00, 0x3E, 0x3F, 0x9D, 0xDC, 0x6E, 0x3F, 0x1F, + 0x8C, 0xEE, 0x7F, 0x1F, 0x00, 0x3B, 0xFF, 0xF1, 0x8C, 0x63, 0x18, 0xC0, 0x7E, 0x7F, 0x67, 0x07, + 0x0E, 0x1C, 0x38, 0x70, 0x7F, 0x7F, 0x7E, 0x7E, 0x6F, 0x3E, 0x3E, 0x0F, 0x07, 0x67, 0x7F, 0x7E, + 0x07, 0x07, 0x87, 0xC7, 0xE7, 0x73, 0x3B, 0xFF, 0xFF, 0x07, 0x03, 0x80, 0x7E, 0xFD, 0x87, 0xEF, + 0xE3, 0xC1, 0xE7, 0xFF, 0xF8, 0x0F, 0x1F, 0x9F, 0x0F, 0xC7, 0xF3, 0xB9, 0x8E, 0xEE, 0x7F, 0x1F, + 0x00, 0x7F, 0x3F, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x00, 0x3E, 0x3F, 0x9D, + 0xCE, 0xE7, 0xE3, 0xF9, 0x8D, 0xEE, 0x7F, 0x1F, 0x00, 0x3E, 0x3F, 0x9D, 0xDC, 0x67, 0xF1, 0xF8, + 0x1C, 0x3E, 0x7E, 0x3C, 0x00, 0xFF, 0xC7, 0xFF, 0xE7, 0xE0, 0xE7, 0xE0, 0x67, 0xE6, 0x67, 0xE6, + 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x67, 0xE6, 0x07, 0xE6, 0x1F, 0xE7, + 0xFE, 0xE7, 0xFC, 0x07, 0xF8, 0x7F, 0x87, 0xCC, 0x38, 0x03, 0x80, 0x7F, 0xF3, 0xFF, 0x87, 0x00, + 0x38, 0x07, 0xFE, 0x3F, 0xF0, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x7C, 0x61, 0xFF, 0x07, 0xF8, 0xFF, + 0xFF, 0xFF, 0xC1, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x7F, 0x03, 0xF8, 0x01, + 0xF8, 0x0F, 0xC1, 0xF8, 0x3F, 0x81, 0xFC, 0x00, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0x7F, 0xC1, 0x8F, + 0x00, 0x1C, 0x00, 0x71, 0xFF, 0xF7, 0xFF, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xFF, 0xDF, 0xFF, + 0x38, 0x00, 0xE0, 0x03, 0xC7, 0x0F, 0xFE, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0x03, 0x8F, + 0xFF, 0x7F, 0xF8, 0x07, 0x00, 0xF8, 0xFF, 0x87, 0xF0, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, + 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x7F, 0x83, 0xFE, 0x18, 0xF8, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC3, 0xFF, 0x3F, 0xFB, 0xE7, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0x70, 0x3B, 0x81, 0xDC, 0x1C, 0xFB, + 0xE3, 0xFE, 0x0F, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x67, 0x00, 0x73, + 0x80, 0x38, 0xE0, 0x38, 0x70, 0x1C, 0x38, 0x1C, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0xC7, 0x00, 0xE3, + 0x80, 0x71, 0xC0, 0x3D, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x0F, + 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, + 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, 0xDC, + 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x01, 0xE0, 0x1E, 0x00, + 0xE0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, + 0x00, 0x38, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x38, + 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x00, 0xFF, 0xF0, 0x00, 0x0E, + 0x00, 0x18, 0x00, 0x70, 0x00, 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, + 0xE1, 0xE1, 0xC7, 0xC3, 0x0F, 0xCE, 0x03, 0x9C, 0x03, 0xB8, 0x07, 0x60, 0x07, 0xC0, 0x0F, 0x80, + 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0xF9, 0xFF, 0xF7, 0x7D, 0xF8, 0xE3, 0x77, 0xDD, 0xFF, 0xF3, 0xEF, + 0x80, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, + 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x1F, 0x0F, 0x83, 0xC0, 0x7C, + 0x3F, 0xF7, 0xEF, 0xFC, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x3F, 0xF7, 0xEF, 0xFC, 0x3E, 0x00, 0xC0, + 0x1C, 0x01, 0xCF, 0xFF, 0xFF, 0xF0, 0x70, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x38, 0x03, 0x80, + 0x30, 0x00, 0x00, 0x70, 0x1F, 0x0F, 0xE3, 0xF8, 0xFC, 0x0F, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, + 0x1F, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0F, 0x80, 0x7F, 0x00, 0xFC, 0x03, + 0xF0, 0x0F, 0x03, 0xF0, 0xFC, 0x7F, 0x0F, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, + 0x3F, 0x1F, 0xDF, 0xCF, 0xFF, 0x33, 0xCB, 0x80, 0xE0, 0xE0, 0x78, 0x38, 0x1C, 0x0F, 0xF7, 0xFB, + 0xFD, 0xFE, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x00, 0x3F, 0x03, 0xFB, 0xFC, 0x9F, + 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xFD, 0xDF, 0xEE, 0xE0, 0x77, 0x03, 0xB8, 0x1D, 0xC0, 0xEE, 0x07, + 0x70, 0x3B, 0x81, 0xDC, 0x0E, 0xE0, 0x77, 0x03, 0xB8, 0x1C, 0x3F, 0x71, 0xFD, 0xCF, 0x27, 0x38, + 0x1C, 0xE0, 0x73, 0x81, 0xCF, 0xF7, 0x3F, 0xDC, 0xE0, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x1C, 0xE0, + 0x73, 0x81, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0x7B, 0x80, 0xFE, 0x01, 0xC0, 0x3F, 0x1F, 0x80, 0xFE, + 0x7F, 0x3B, 0xCC, 0xF2, 0x77, 0x01, 0xC0, 0x0E, 0x07, 0x80, 0x1C, 0x0E, 0x00, 0x3F, 0xDF, 0xE7, + 0x7F, 0xBF, 0xCE, 0xE0, 0x70, 0x1D, 0xC0, 0xE0, 0x3B, 0x81, 0xC0, 0x77, 0x03, 0x80, 0xEE, 0x07, + 0x01, 0xDC, 0x0E, 0x03, 0xB8, 0x1C, 0x07, 0x70, 0x38, 0x0E, 0xE0, 0x70, 0x1D, 0xC0, 0xE0, 0x3B, + 0x81, 0xC0, 0x70, 0x3F, 0x1F, 0x9C, 0x7F, 0x3F, 0x9C, 0xF3, 0x3C, 0x9C, 0xE0, 0x38, 0x1C, 0xE0, + 0x78, 0x1C, 0xE0, 0x70, 0x1C, 0xFF, 0x7F, 0x9C, 0xFF, 0x7F, 0x9C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, + 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1C, + 0xE0, 0x70, 0x1C, 0xE0, 0x70, 0x1E, 0xE0, 0x70, 0x0F, 0xE0, 0x70, 0x0F, }; static const EpdGlyph ubuntu_12_regularGlyphs[] = { @@ -2067,71 +2298,159 @@ static const EpdGlyph ubuntu_12_regularGlyphs[] = { { 11, 15, 209, 1, 15, 21, 20694 }, // U+05E8 { 16, 15, 292, 1, 15, 30, 20715 }, // U+05E9 { 16, 15, 274, 0, 15, 30, 20745 }, // U+05EA - { 15, 24, 239, 0, 24, 45, 20775 }, // U+1EF2 - { 12, 26, 199, 0, 21, 39, 20820 }, // U+1EF3 - { 2, 19, 0, -1, 18, 5, 20859 }, // U+200C - { 6, 19, 0, -3, 18, 15, 20864 }, // U+200D - { 7, 20, 0, -1, 18, 18, 20879 }, // U+200E - { 7, 20, 0, -6, 18, 18, 20897 }, // U+200F - { 8, 2, 128, 0, 8, 2, 20915 }, // U+2010 - { 14, 2, 198, -1, 9, 4, 20917 }, // U+2013 - { 26, 2, 398, -1, 9, 7, 20921 }, // U+2014 - { 26, 2, 398, -1, 9, 7, 20928 }, // U+2015 - { 5, 6, 94, 1, 19, 4, 20935 }, // U+2018 - { 5, 6, 94, 0, 19, 4, 20939 }, // U+2019 - { 5, 6, 94, 0, 3, 4, 20943 }, // U+201A - { 9, 6, 167, 1, 19, 7, 20947 }, // U+201C - { 9, 6, 167, 0, 19, 7, 20954 }, // U+201D - { 9, 6, 167, 0, 3, 7, 20961 }, // U+201E - { 11, 21, 190, 0, 17, 29, 20968 }, // U+2020 - { 11, 21, 190, 0, 17, 29, 20997 }, // U+2021 - { 7, 6, 144, 1, 12, 6, 21026 }, // U+2022 - { 21, 3, 398, 2, 3, 8, 21032 }, // U+2026 - { 29, 17, 491, 1, 17, 62, 21040 }, // U+2030 - { 7, 11, 116, 0, 13, 10, 21102 }, // U+2039 - { 6, 11, 116, 1, 13, 9, 21112 }, // U+203A - { 13, 17, 59, -5, 17, 28, 21121 }, // U+2044 - { 9, 10, 144, 0, 18, 12, 21149 }, // U+2070 - { 9, 10, 144, 0, 18, 12, 21161 }, // U+2074 - { 7, 10, 144, 1, 18, 9, 21173 }, // U+2075 - { 9, 10, 144, 0, 18, 12, 21182 }, // U+2076 - { 9, 10, 144, 0, 18, 12, 21194 }, // U+2077 - { 9, 10, 144, 0, 18, 12, 21206 }, // U+2078 - { 9, 10, 144, 0, 18, 12, 21218 }, // U+2079 - { 9, 10, 144, 0, 10, 12, 21230 }, // U+2080 - { 5, 10, 144, 1, 10, 7, 21242 }, // U+2081 - { 8, 10, 144, 0, 10, 10, 21249 }, // U+2082 - { 8, 10, 144, 0, 10, 10, 21259 }, // U+2083 - { 9, 10, 144, 0, 10, 12, 21269 }, // U+2084 - { 7, 10, 144, 1, 10, 9, 21281 }, // U+2085 - { 9, 10, 144, 0, 10, 12, 21290 }, // U+2086 - { 9, 10, 144, 0, 10, 12, 21302 }, // U+2087 - { 9, 10, 144, 0, 10, 12, 21314 }, // U+2088 - { 9, 10, 144, 0, 10, 12, 21326 }, // U+2089 - { 16, 15, 317, 2, 15, 30, 21338 }, // U+20AA - { 13, 17, 226, 1, 17, 28, 21368 }, // U+20AC - { 13, 17, 226, 1, 17, 28, 21396 }, // U+20AE - { 14, 17, 226, 0, 17, 30, 21424 }, // U+20B4 - { 13, 17, 226, 1, 17, 28, 21454 }, // U+20B9 - { 13, 19, 234, 1, 19, 31, 21482 }, // U+2202 - { 17, 17, 260, 0, 17, 37, 21513 }, // U+2206 - { 14, 20, 279, 2, 17, 35, 21550 }, // U+220F - { 13, 20, 206, 0, 17, 33, 21585 }, // U+2211 - { 12, 2, 226, 1, 8, 3, 21618 }, // U+2212 - { 13, 17, 59, -5, 17, 28, 21621 }, // U+2215 - { 4, 3, 98, 1, 9, 2, 21649 }, // U+2219 - { 15, 20, 226, 0, 20, 38, 21651 }, // U+221A - { 14, 7, 235, 0, 11, 13, 21689 }, // U+221E - { 10, 24, 148, 0, 19, 30, 21702 }, // U+222B - { 12, 10, 226, 1, 13, 15, 21732 }, // U+2248 - { 12, 13, 226, 1, 14, 20, 21747 }, // U+2260 - { 12, 15, 226, 1, 15, 23, 21767 }, // U+2264 - { 12, 15, 226, 1, 15, 23, 21790 }, // U+2265 - { 18, 19, 310, 2, 19, 43, 21813 }, // U+FB00 - { 13, 19, 257, 2, 19, 31, 21856 }, // U+FB01 - { 14, 19, 265, 2, 19, 34, 21887 }, // U+FB02 - { 23, 19, 413, 2, 19, 55, 21921 }, // U+FB03 - { 24, 19, 421, 2, 19, 57, 21976 }, // U+FB04 + { 17, 23, 265, 0, 18, 49, 20775 }, // U+1EA0 + { 11, 19, 209, 1, 14, 27, 20824 }, // U+1EA1 + { 17, 24, 265, 0, 24, 51, 20851 }, // U+1EA2 + { 11, 20, 209, 1, 19, 28, 20902 }, // U+1EA3 + { 17, 26, 265, 0, 26, 56, 20930 }, // U+1EA4 + { 13, 24, 209, 1, 23, 39, 20986 }, // U+1EA5 + { 17, 26, 265, 0, 26, 56, 21025 }, // U+1EA6 + { 11, 24, 209, 1, 23, 33, 21081 }, // U+1EA7 + { 17, 27, 265, 0, 27, 58, 21114 }, // U+1EA8 + { 12, 24, 209, 1, 23, 36, 21172 }, // U+1EA9 + { 17, 27, 265, 0, 27, 58, 21208 }, // U+1EAA + { 11, 24, 209, 1, 23, 33, 21266 }, // U+1EAB + { 17, 29, 265, 0, 24, 62, 21299 }, // U+1EAC + { 11, 25, 209, 1, 20, 35, 21361 }, // U+1EAD + { 17, 28, 265, 0, 28, 60, 21396 }, // U+1EAE + { 11, 25, 209, 1, 24, 35, 21456 }, // U+1EAF + { 17, 28, 265, 0, 28, 60, 21491 }, // U+1EB0 + { 11, 25, 209, 1, 24, 35, 21551 }, // U+1EB1 + { 17, 27, 265, 0, 27, 58, 21586 }, // U+1EB2 + { 11, 25, 209, 1, 24, 35, 21644 }, // U+1EB3 + { 17, 27, 265, 0, 27, 58, 21679 }, // U+1EB4 + { 11, 24, 209, 1, 23, 33, 21737 }, // U+1EB5 + { 17, 28, 265, 0, 23, 60, 21770 }, // U+1EB6 + { 11, 24, 209, 1, 19, 33, 21830 }, // U+1EB7 + { 12, 23, 228, 2, 18, 35, 21863 }, // U+1EB8 + { 12, 19, 224, 1, 14, 29, 21898 }, // U+1EB9 + { 12, 24, 228, 2, 24, 36, 21927 }, // U+1EBA + { 12, 20, 224, 1, 19, 30, 21963 }, // U+1EBB + { 12, 23, 228, 2, 23, 35, 21993 }, // U+1EBC + { 12, 20, 224, 1, 19, 30, 22028 }, // U+1EBD + { 13, 26, 228, 2, 26, 43, 22058 }, // U+1EBE + { 14, 24, 224, 1, 23, 42, 22101 }, // U+1EBF + { 12, 26, 228, 2, 26, 39, 22143 }, // U+1EC0 + { 12, 24, 224, 1, 23, 36, 22182 }, // U+1EC1 + { 12, 27, 228, 2, 27, 41, 22218 }, // U+1EC2 + { 13, 24, 224, 1, 23, 39, 22259 }, // U+1EC3 + { 12, 27, 228, 2, 27, 41, 22298 }, // U+1EC4 + { 12, 25, 224, 1, 24, 38, 22339 }, // U+1EC5 + { 12, 29, 228, 2, 24, 44, 22377 }, // U+1EC6 + { 12, 25, 224, 1, 20, 38, 22421 }, // U+1EC7 + { 5, 24, 108, 1, 24, 15, 22459 }, // U+1EC8 + { 5, 19, 101, 1, 19, 12, 22474 }, // U+1EC9 + { 4, 23, 108, 1, 18, 12, 22486 }, // U+1ECA + { 4, 24, 101, 1, 19, 12, 22498 }, // U+1ECB + { 17, 23, 311, 1, 18, 49, 22510 }, // U+1ECC + { 13, 19, 236, 1, 14, 31, 22559 }, // U+1ECD + { 17, 25, 311, 1, 24, 54, 22590 }, // U+1ECE + { 13, 20, 236, 1, 19, 33, 22644 }, // U+1ECF + { 17, 28, 311, 1, 27, 60, 22677 }, // U+1ED0 + { 14, 24, 236, 1, 23, 42, 22737 }, // U+1ED1 + { 17, 28, 311, 1, 27, 60, 22779 }, // U+1ED2 + { 13, 24, 236, 1, 23, 39, 22839 }, // U+1ED3 + { 17, 28, 311, 1, 27, 60, 22878 }, // U+1ED4 + { 13, 23, 236, 1, 22, 38, 22938 }, // U+1ED5 + { 17, 28, 311, 1, 27, 60, 22976 }, // U+1ED6 + { 13, 24, 236, 1, 23, 39, 23036 }, // U+1ED7 + { 17, 29, 311, 1, 24, 62, 23075 }, // U+1ED8 + { 13, 25, 236, 1, 20, 41, 23137 }, // U+1ED9 + { 18, 25, 311, 1, 24, 57, 23178 }, // U+1EDA + { 14, 21, 236, 1, 20, 37, 23235 }, // U+1EDB + { 18, 25, 311, 1, 24, 57, 23272 }, // U+1EDC + { 14, 21, 236, 1, 20, 37, 23329 }, // U+1EDD + { 18, 25, 311, 1, 24, 57, 23366 }, // U+1EDE + { 14, 20, 236, 1, 19, 35, 23423 }, // U+1EDF + { 18, 24, 311, 1, 23, 54, 23458 }, // U+1EE0 + { 14, 20, 236, 1, 19, 35, 23512 }, // U+1EE1 + { 18, 26, 311, 1, 21, 59, 23547 }, // U+1EE2 + { 14, 21, 236, 1, 16, 37, 23606 }, // U+1EE3 + { 14, 23, 275, 2, 18, 41, 23643 }, // U+1EE4 + { 12, 18, 230, 1, 13, 27, 23684 }, // U+1EE5 + { 14, 25, 275, 2, 24, 44, 23711 }, // U+1EE6 + { 12, 20, 230, 1, 19, 30, 23755 }, // U+1EE7 + { 17, 25, 284, 2, 24, 54, 23785 }, // U+1EE8 + { 15, 21, 239, 1, 20, 40, 23839 }, // U+1EE9 + { 17, 25, 284, 2, 24, 54, 23879 }, // U+1EEA + { 15, 21, 239, 1, 20, 40, 23933 }, // U+1EEB + { 17, 25, 284, 2, 24, 54, 23973 }, // U+1EEC + { 15, 20, 239, 1, 19, 38, 24027 }, // U+1EED + { 17, 24, 284, 2, 23, 51, 24065 }, // U+1EEE + { 15, 20, 239, 1, 19, 38, 24116 }, // U+1EEF + { 17, 26, 284, 2, 21, 56, 24154 }, // U+1EF0 + { 15, 21, 239, 1, 16, 40, 24210 }, // U+1EF1 + { 15, 24, 239, 0, 24, 45, 24250 }, // U+1EF2 + { 12, 26, 199, 0, 21, 39, 24295 }, // U+1EF3 + { 15, 23, 239, 0, 18, 44, 24334 }, // U+1EF4 + { 12, 18, 199, 0, 13, 27, 24378 }, // U+1EF5 + { 15, 24, 239, 0, 24, 45, 24405 }, // U+1EF6 + { 12, 24, 199, 0, 19, 36, 24450 }, // U+1EF7 + { 15, 23, 239, 0, 23, 44, 24486 }, // U+1EF8 + { 12, 24, 199, 0, 19, 36, 24530 }, // U+1EF9 + { 2, 19, 0, -1, 18, 5, 24566 }, // U+200C + { 6, 19, 0, -3, 18, 15, 24571 }, // U+200D + { 7, 20, 0, -1, 18, 18, 24586 }, // U+200E + { 7, 20, 0, -6, 18, 18, 24604 }, // U+200F + { 8, 2, 128, 0, 8, 2, 24622 }, // U+2010 + { 14, 2, 198, -1, 9, 4, 24624 }, // U+2013 + { 26, 2, 398, -1, 9, 7, 24628 }, // U+2014 + { 26, 2, 398, -1, 9, 7, 24635 }, // U+2015 + { 5, 6, 94, 1, 19, 4, 24642 }, // U+2018 + { 5, 6, 94, 0, 19, 4, 24646 }, // U+2019 + { 5, 6, 94, 0, 3, 4, 24650 }, // U+201A + { 9, 6, 167, 1, 19, 7, 24654 }, // U+201C + { 9, 6, 167, 0, 19, 7, 24661 }, // U+201D + { 9, 6, 167, 0, 3, 7, 24668 }, // U+201E + { 11, 21, 190, 0, 17, 29, 24675 }, // U+2020 + { 11, 21, 190, 0, 17, 29, 24704 }, // U+2021 + { 7, 6, 144, 1, 12, 6, 24733 }, // U+2022 + { 21, 3, 398, 2, 3, 8, 24739 }, // U+2026 + { 29, 17, 491, 1, 17, 62, 24747 }, // U+2030 + { 7, 11, 116, 0, 13, 10, 24809 }, // U+2039 + { 6, 11, 116, 1, 13, 9, 24819 }, // U+203A + { 13, 17, 59, -5, 17, 28, 24828 }, // U+2044 + { 9, 10, 144, 0, 18, 12, 24856 }, // U+2070 + { 9, 10, 144, 0, 18, 12, 24868 }, // U+2074 + { 7, 10, 144, 1, 18, 9, 24880 }, // U+2075 + { 9, 10, 144, 0, 18, 12, 24889 }, // U+2076 + { 9, 10, 144, 0, 18, 12, 24901 }, // U+2077 + { 9, 10, 144, 0, 18, 12, 24913 }, // U+2078 + { 9, 10, 144, 0, 18, 12, 24925 }, // U+2079 + { 9, 10, 144, 0, 10, 12, 24937 }, // U+2080 + { 5, 10, 144, 1, 10, 7, 24949 }, // U+2081 + { 8, 10, 144, 0, 10, 10, 24956 }, // U+2082 + { 8, 10, 144, 0, 10, 10, 24966 }, // U+2083 + { 9, 10, 144, 0, 10, 12, 24976 }, // U+2084 + { 7, 10, 144, 1, 10, 9, 24988 }, // U+2085 + { 9, 10, 144, 0, 10, 12, 24997 }, // U+2086 + { 9, 10, 144, 0, 10, 12, 25009 }, // U+2087 + { 9, 10, 144, 0, 10, 12, 25021 }, // U+2088 + { 9, 10, 144, 0, 10, 12, 25033 }, // U+2089 + { 16, 15, 317, 2, 15, 30, 25045 }, // U+20AA + { 13, 17, 226, 1, 17, 28, 25075 }, // U+20AC + { 13, 17, 226, 1, 17, 28, 25103 }, // U+20AE + { 14, 17, 226, 0, 17, 30, 25131 }, // U+20B4 + { 13, 17, 226, 1, 17, 28, 25161 }, // U+20B9 + { 13, 19, 234, 1, 19, 31, 25189 }, // U+2202 + { 17, 17, 260, 0, 17, 37, 25220 }, // U+2206 + { 14, 20, 279, 2, 17, 35, 25257 }, // U+220F + { 13, 20, 206, 0, 17, 33, 25292 }, // U+2211 + { 12, 2, 226, 1, 8, 3, 25325 }, // U+2212 + { 13, 17, 59, -5, 17, 28, 25328 }, // U+2215 + { 4, 3, 98, 1, 9, 2, 25356 }, // U+2219 + { 15, 20, 226, 0, 20, 38, 25358 }, // U+221A + { 14, 7, 235, 0, 11, 13, 25396 }, // U+221E + { 10, 24, 148, 0, 19, 30, 25409 }, // U+222B + { 12, 10, 226, 1, 13, 15, 25439 }, // U+2248 + { 12, 13, 226, 1, 14, 20, 25454 }, // U+2260 + { 12, 15, 226, 1, 15, 23, 25474 }, // U+2264 + { 12, 15, 226, 1, 15, 23, 25497 }, // U+2265 + { 18, 19, 310, 2, 19, 43, 25520 }, // U+FB00 + { 13, 19, 257, 2, 19, 31, 25563 }, // U+FB01 + { 14, 19, 265, 2, 19, 34, 25594 }, // U+FB02 + { 23, 19, 413, 2, 19, 55, 25628 }, // U+FB03 + { 24, 19, 421, 2, 19, 57, 25683 }, // U+FB04 }; static const EpdUnicodeInterval ubuntu_12_regularIntervals[] = { @@ -2156,36 +2475,36 @@ static const EpdUnicodeInterval ubuntu_12_regularIntervals[] = { { 0x472, 0x475, 0x216 }, { 0x48A, 0x4F9, 0x21A }, { 0x5D0, 0x5EA, 0x28A }, - { 0x1EF2, 0x1EF3, 0x2A5 }, - { 0x200C, 0x2010, 0x2A7 }, - { 0x2013, 0x2015, 0x2AC }, - { 0x2018, 0x201A, 0x2AF }, - { 0x201C, 0x201E, 0x2B2 }, - { 0x2020, 0x2022, 0x2B5 }, - { 0x2026, 0x2026, 0x2B8 }, - { 0x2030, 0x2030, 0x2B9 }, - { 0x2039, 0x203A, 0x2BA }, - { 0x2044, 0x2044, 0x2BC }, - { 0x2070, 0x2070, 0x2BD }, - { 0x2074, 0x2079, 0x2BE }, - { 0x2080, 0x2089, 0x2C4 }, - { 0x20AA, 0x20AA, 0x2CE }, - { 0x20AC, 0x20AC, 0x2CF }, - { 0x20AE, 0x20AE, 0x2D0 }, - { 0x20B4, 0x20B4, 0x2D1 }, - { 0x20B9, 0x20B9, 0x2D2 }, - { 0x2202, 0x2202, 0x2D3 }, - { 0x2206, 0x2206, 0x2D4 }, - { 0x220F, 0x220F, 0x2D5 }, - { 0x2211, 0x2212, 0x2D6 }, - { 0x2215, 0x2215, 0x2D8 }, - { 0x2219, 0x221A, 0x2D9 }, - { 0x221E, 0x221E, 0x2DB }, - { 0x222B, 0x222B, 0x2DC }, - { 0x2248, 0x2248, 0x2DD }, - { 0x2260, 0x2260, 0x2DE }, - { 0x2264, 0x2265, 0x2DF }, - { 0xFB00, 0xFB04, 0x2E1 }, + { 0x1EA0, 0x1EF9, 0x2A5 }, + { 0x200C, 0x2010, 0x2FF }, + { 0x2013, 0x2015, 0x304 }, + { 0x2018, 0x201A, 0x307 }, + { 0x201C, 0x201E, 0x30A }, + { 0x2020, 0x2022, 0x30D }, + { 0x2026, 0x2026, 0x310 }, + { 0x2030, 0x2030, 0x311 }, + { 0x2039, 0x203A, 0x312 }, + { 0x2044, 0x2044, 0x314 }, + { 0x2070, 0x2070, 0x315 }, + { 0x2074, 0x2079, 0x316 }, + { 0x2080, 0x2089, 0x31C }, + { 0x20AA, 0x20AA, 0x326 }, + { 0x20AC, 0x20AC, 0x327 }, + { 0x20AE, 0x20AE, 0x328 }, + { 0x20B4, 0x20B4, 0x329 }, + { 0x20B9, 0x20B9, 0x32A }, + { 0x2202, 0x2202, 0x32B }, + { 0x2206, 0x2206, 0x32C }, + { 0x220F, 0x220F, 0x32D }, + { 0x2211, 0x2212, 0x32E }, + { 0x2215, 0x2215, 0x330 }, + { 0x2219, 0x221A, 0x331 }, + { 0x221E, 0x221E, 0x333 }, + { 0x222B, 0x222B, 0x334 }, + { 0x2248, 0x2248, 0x335 }, + { 0x2260, 0x2260, 0x336 }, + { 0x2264, 0x2265, 0x337 }, + { 0xFB00, 0xFB04, 0x339 }, }; static const EpdKernClassEntry ubuntu_12_regularKernLeftClasses[] = { diff --git a/lib/EpdFont/scripts/build-sd-fonts.py b/lib/EpdFont/scripts/build-sd-fonts.py index 8f981fbe..406cbb88 100755 --- a/lib/EpdFont/scripts/build-sd-fonts.py +++ b/lib/EpdFont/scripts/build-sd-fonts.py @@ -46,6 +46,7 @@ DEFAULT_CONFIG = SCRIPT_DIR / "sd-fonts.yaml" DEFAULT_OUTPUT = SCRIPT_DIR / "output" DOWNLOAD_DIR = SCRIPT_DIR / "downloaded_fonts" INSTANCE_DIR = SCRIPT_DIR / "instanced_fonts" +DEFAULT_FALLBACK_FONT = EPDFONTS_DIR / "builtinFonts/source/NotoSans/NotoSans-Regular.ttf" def download_font(url: str, dest: Path) -> Path: @@ -186,12 +187,14 @@ def build_family( # Multi-style mode for style_name, font_path in resolved_styles.items(): cmd.extend([f"--{style_name}", str(font_path)]) + cmd.extend([f"--fallback-{style_name}", str(DEFAULT_FALLBACK_FONT)]) else: # Single-style mode style_name = next(iter(resolved_styles)) font_path = resolved_styles[style_name] cmd.append(str(font_path)) cmd.extend(["--style", style_name]) + cmd.extend([f"--fallback-{style_name}", str(DEFAULT_FALLBACK_FONT)]) cmd.extend(["--intervals", intervals]) cmd.extend(["--sizes", sizes]) @@ -330,6 +333,15 @@ def main(): print("ERROR: No families defined in config", file=sys.stderr) sys.exit(1) + if not DEFAULT_FALLBACK_FONT.exists() or not DEFAULT_FALLBACK_FONT.is_file(): + print( + "ERROR: Missing default fallback font: " + f"{DEFAULT_FALLBACK_FONT}\n" + "This font is required for fallback glyphs in SD font builds.", + file=sys.stderr, + ) + sys.exit(1) + # Filter if --only specified if args.only: only_names = set(args.only.split(",")) diff --git a/lib/EpdFont/scripts/convert-builtin-fonts.sh b/lib/EpdFont/scripts/convert-builtin-fonts.sh index 9e16b29f..a259603a 100755 --- a/lib/EpdFont/scripts/convert-builtin-fonts.sh +++ b/lib/EpdFont/scripts/convert-builtin-fonts.sh @@ -36,8 +36,13 @@ for size in ${UI_FONT_SIZES[@]}; do font_name="ubuntu_${size}_$(echo $style | tr '[:upper:]' '[:lower:]')" font_path="../builtinFonts/source/Ubuntu/Ubuntu-${style}.ttf" hebrew_path="../builtinFonts/source/NotoSansHebrew/NotoSansHebrew-${style}.ttf" + # Ubuntu lacks the Latin Extended Additional block (U+1EA0-U+1EF9) used for + # Vietnamese tone marks. Append a Vietnamese-only Ubuntu cut so those glyphs + # are filled from it while every glyph Ubuntu already has stays unchanged + # (fontstack is ordered by descending priority). + viet_path="../builtinFonts/source/Ubuntu/Ubuntu-Vietnamese-${style}.ttf" output_path="../builtinFonts/${font_name}.h" - python fontconvert.py $font_name $size $font_path $hebrew_path \ + python fontconvert.py $font_name $size $font_path $hebrew_path $viet_path \ --additional-intervals 0x05D0,0x05EA > $output_path echo "Generated $output_path" done diff --git a/lib/EpdFont/scripts/fontconvert_sdcard.py b/lib/EpdFont/scripts/fontconvert_sdcard.py index a6d9db5e..e2125be4 100755 --- a/lib/EpdFont/scripts/fontconvert_sdcard.py +++ b/lib/EpdFont/scripts/fontconvert_sdcard.py @@ -518,7 +518,8 @@ def extract_ligatures_fonttools(font_path, codepoints): return pairs -def rasterize_font_style(fontfile, size, intervals, style_id=0, force_autohint=False): +def rasterize_font_style(fontfile, size, intervals, style_id=0, force_autohint=False, + fallback_fontfile=None): """Rasterize all glyphs for one font style. Returns StyleRasterData.""" import freetype @@ -531,6 +532,10 @@ def rasterize_font_style(fontfile, size, intervals, style_id=0, force_autohint=F # it before set_char_size() would waste work at the default size and risk # Invalid_Size_Handle on some fonts. face.set_char_size(size << 6, size << 6, 150, 150) + fallback_face = None + if fallback_fontfile: + fallback_face = freetype.Face(fallback_fontfile) + fallback_face.set_char_size(size << 6, size << 6, 150, 150) load_flags = freetype.FT_LOAD_RENDER if force_autohint: @@ -541,6 +546,11 @@ def rasterize_font_style(fontfile, size, intervals, style_id=0, force_autohint=F if glyph_index > 0: face.load_glyph(glyph_index, load_flags) return face + if fallback_face: + fallback_glyph_index = fallback_face.get_char_index(code_point) + if fallback_glyph_index > 0: + fallback_face.load_glyph(fallback_glyph_index, load_flags) + return fallback_face return None # Validate intervals: remove codepoints not present in the font. @@ -552,7 +562,9 @@ def rasterize_font_style(fontfile, size, intervals, style_id=0, force_autohint=F for i_start, i_end in intervals: start = i_start for code_point in range(i_start, i_end + 1): - if face.get_char_index(code_point) == 0: + has_primary = face.get_char_index(code_point) != 0 + has_fallback = fallback_face and fallback_face.get_char_index(code_point) != 0 + if not has_primary and not has_fallback: if start < code_point: validated_intervals.append((start, code_point - 1)) start = code_point + 1 @@ -763,10 +775,11 @@ def style_sections_total_size(sections): # --- File writers --- def generate_cpfont_multistyle(style_fonts, size, intervals, output_path, - force_autohint=False): + force_autohint=False, fallback_style_fonts=None): """Generate a multi-style v4 .cpfont file. style_fonts: dict of {style_id: fontfile_path} e.g. {0: "Regular.ttf", 2: "Italic.ttf"} + fallback_style_fonts: optional dict of {style_id: fallback_fontfile_path} """ MAGIC = b"CPFONT\x00\x00" HEADER_SIZE = 32 @@ -776,12 +789,15 @@ def generate_cpfont_multistyle(style_fonts, size, intervals, output_path, # Rasterize each style raster_data = {} # style_id -> StyleRasterData + fallback_style_fonts = fallback_style_fonts or {} for style_id in sorted(style_fonts.keys()): fontfile = style_fonts[style_id] + fallback_fontfile = fallback_style_fonts.get(style_id) print(f" Rasterizing style {style_id}...", file=sys.stderr) raster_data[style_id] = rasterize_font_style( fontfile, size, intervals, style_id=style_id, - force_autohint=force_autohint) + force_autohint=force_autohint, + fallback_fontfile=fallback_fontfile) # Pack binary sections for each style packed_sections = {} # style_id -> tuple of section bytearrays @@ -892,6 +908,14 @@ def main(): help="Font file for italic style.") parser.add_argument("--bolditalic", dest="font_bolditalic", help="Font file for bold-italic style.") + parser.add_argument("--fallback-regular", dest="fallback_regular", + help="Fallback font file for regular style.") + parser.add_argument("--fallback-bold", dest="fallback_bold", + help="Fallback font file for bold style.") + parser.add_argument("--fallback-italic", dest="fallback_italic", + help="Fallback font file for italic style.") + parser.add_argument("--fallback-bolditalic", dest="fallback_bolditalic", + help="Fallback font file for bold-italic style.") args = parser.parse_args() @@ -913,6 +937,16 @@ def main(): if args.font_bolditalic: style_fonts[3] = args.font_bolditalic + fallback_style_fonts = {} + if args.fallback_regular: + fallback_style_fonts[0] = args.fallback_regular + if args.fallback_bold: + fallback_style_fonts[1] = args.fallback_bold + if args.fallback_italic: + fallback_style_fonts[2] = args.fallback_italic + if args.fallback_bolditalic: + fallback_style_fonts[3] = args.fallback_bolditalic + is_multistyle = len(style_fonts) > 0 fontfile = args.fontfile @@ -980,7 +1014,8 @@ def main(): print(f"Generating {output_path} (size {sz}, {len(style_fonts)} style(s), v4)...", file=sys.stderr) total_size += generate_cpfont_multistyle( style_fonts, sz, intervals, output_path, - force_autohint=args.force_autohint) + force_autohint=args.force_autohint, + fallback_style_fonts=fallback_style_fonts) print(f"\nTotal: {len(sizes)} files, {total_size / 1024 / 1024:.2f} MB", file=sys.stderr) diff --git a/lib/EpdFont/scripts/sd-fonts.yaml b/lib/EpdFont/scripts/sd-fonts.yaml index c40441a9..8cb7f420 100644 --- a/lib/EpdFont/scripts/sd-fonts.yaml +++ b/lib/EpdFont/scripts/sd-fonts.yaml @@ -122,6 +122,16 @@ families: bold: {url: "https://mirrors.ctan.org/fonts/domitian/opentype/Domitian-Bold.otf"} italic: {url: "https://mirrors.ctan.org/fonts/domitian/opentype/Domitian-Italic.otf"} bolditalic: {url: "https://mirrors.ctan.org/fonts/domitian/opentype/Domitian-BoldItalic.otf"} + + - name: LibreBaskerville + description: "A serif reimplementing the classic Baskerville (Latin)" + intervals: latin-ext + sizes: [12, 14, 16, 18] + styles: + regular: {url: "https://raw.githubusercontent.com/impallari/Libre-Baskerville/master/fonts/ttf/LibreBaskerville-Regular.ttf"} + bold: {url: "https://raw.githubusercontent.com/impallari/Libre-Baskerville/master/fonts/ttf/LibreBaskerville-Bold.ttf"} + italic: {url: "https://raw.githubusercontent.com/impallari/Libre-Baskerville/master/fonts/ttf/LibreBaskerville-Italic.ttf"} + bolditalic: {url: "https://raw.githubusercontent.com/impallari/Libre-Baskerville/master/fonts/ttf/LibreBaskerville-BoldItalic.ttf"} # ── Sans-serif ───────────────────────────────────────────────────────── diff --git a/lib/Epub/Epub/ParsedText.cpp b/lib/Epub/Epub/ParsedText.cpp index 74a29d1a..b66b36ee 100644 --- a/lib/Epub/Epub/ParsedText.cpp +++ b/lib/Epub/Epub/ParsedText.cpp @@ -261,10 +261,18 @@ void ParsedText::addWord(std::string word, const EpdFontFamily::Style fontStyle, } } -int ParsedText::resolveFirstLineIndent(const bool isFirstLine) const { - if (isFirstLine && blockStyle.textIndentDefined && (blockStyle.textIndent < 0 || !extraParagraphSpacing) && - isNaturalAlign) { - return blockStyle.textIndent; +int ParsedText::resolveFirstLineIndent(const bool isFirstLine, const GfxRenderer& renderer, const int fontId) const { + if (!isFirstLine || !isNaturalAlign) { + return 0; + } + if (blockStyle.textIndentDefined) { + if (blockStyle.textIndent < 0 || !extraParagraphSpacing) { + return blockStyle.textIndent; + } + return 0; + } + if (!extraParagraphSpacing) { + return renderer.getSpaceWidth(fontId, EpdFontFamily::REGULAR) * 3; } return 0; } @@ -293,9 +301,6 @@ void ParsedText::layoutAndExtractLines(const GfxRenderer& renderer, const int fo blockStyle.alignment == CssTextAlign::Justify || (blockStyle.isRtl ? blockStyle.alignment == CssTextAlign::Right : blockStyle.alignment == CssTextAlign::Left); - // Apply fixed transforms before any per-line layout work. - applyParagraphIndent(); - // Ensure SD card font glyph metrics are loaded before measuring word widths. // For flash-based fonts isSdCardFont() returns false and this block is skipped // entirely — no heap allocation. For SD card fonts this reads glyph metadata @@ -356,7 +361,7 @@ std::vector ParsedText::computeLineBreaks(const GfxRenderer& renderer, c return {}; } - const int firstLineIndent = resolveFirstLineIndent(true); + const int firstLineIndent = resolveFirstLineIndent(true, renderer, fontId); // Ensure any word that would overflow even as the first entry on a line is split using fallback hyphenation. for (size_t i = 0; i < wordWidths.size(); ++i) { @@ -462,25 +467,11 @@ std::vector ParsedText::computeLineBreaks(const GfxRenderer& renderer, c return lineBreakIndices; } -void ParsedText::applyParagraphIndent() { - if (extraParagraphSpacing || words.empty()) { - return; - } - - if (blockStyle.textIndentDefined) { - // CSS text-indent is explicitly set (even if 0) - don't use fallback EmSpace - // The actual indent positioning is handled in extractLine() - } else if (isNaturalAlign) { - // No CSS text-indent defined - use EmSpace fallback for visual indent - words.front().insert(0, "\xe2\x80\x83"); - } -} - // Builds break indices while opportunistically splitting the word that would overflow the current line. std::vector ParsedText::computeHyphenatedLineBreaks(const GfxRenderer& renderer, const int fontId, const int pageWidth, std::vector& wordWidths, std::vector& continuesVec) { - const int firstLineIndent = resolveFirstLineIndent(true); + const int firstLineIndent = resolveFirstLineIndent(true, renderer, fontId); std::vector lineBreakIndices; size_t currentIndex = 0; @@ -643,7 +634,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const const size_t lastBreakAt = breakIndex > 0 ? lineBreakIndices[breakIndex - 1] : 0; const size_t lineWordCount = lineBreak - lastBreakAt; - const int firstLineIndent = resolveFirstLineIndent(breakIndex == 0); + const int firstLineIndent = resolveFirstLineIndent(breakIndex == 0, renderer, fontId); // Build line data by moving from the original vectors using index range std::vector lineWords; @@ -799,7 +790,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const } for (size_t wordIdx = 0; wordIdx < reorderedWidthsScratch.size(); wordIdx++) { - lineXPos.push_back(static_cast(xpos < 0 ? 0 : xpos)); + lineXPos.push_back(static_cast(xpos)); xpos += reorderedWidthsScratch[wordIdx]; const bool nextIsContinuation = @@ -830,7 +821,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const // Standard LTR/RTL positioning loop when no visual reordering is needed if (blockStyle.isRtl) { // RTL: position words from right to left - auto xpos = static_cast(effectivePageWidth); + int xpos = effectivePageWidth; if (effectiveAlignment == CssTextAlign::Left) { // Explicit left alignment in RTL context xpos = lineWordWidthSum + totalNaturalGaps; @@ -841,7 +832,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const for (size_t wordIdx = 0; wordIdx < lineWordCount; wordIdx++) { xpos -= wordWidths[lastBreakAt + wordIdx]; - lineXPos.push_back(static_cast(xpos < 0 ? 0 : xpos)); + lineXPos.push_back(static_cast(xpos)); const bool nextIsContinuation = wordIdx + 1 < lineWordCount && continuesVec[lastBreakAt + wordIdx + 1]; if (nextIsContinuation) { @@ -867,7 +858,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const } } else { // LTR: position words from left to right - auto xpos = static_cast(firstLineIndent); + int xpos = firstLineIndent; if (effectiveAlignment == CssTextAlign::Right) { xpos = effectivePageWidth - lineWordWidthSum - totalNaturalGaps; } else if (effectiveAlignment == CssTextAlign::Center) { @@ -875,7 +866,7 @@ void ParsedText::extractLine(const size_t breakIndex, const int pageWidth, const } for (size_t wordIdx = 0; wordIdx < lineWordCount; wordIdx++) { - lineXPos.push_back(static_cast(xpos < 0 ? 0 : xpos)); + lineXPos.push_back(static_cast(xpos)); const bool nextIsContinuation = wordIdx + 1 < lineWordCount && continuesVec[lastBreakAt + wordIdx + 1]; if (nextIsContinuation) { diff --git a/lib/Epub/Epub/ParsedText.h b/lib/Epub/Epub/ParsedText.h index df5dd3f1..9c3af7cb 100644 --- a/lib/Epub/Epub/ParsedText.h +++ b/lib/Epub/Epub/ParsedText.h @@ -30,8 +30,7 @@ class ParsedText { std::vector reorderedFocusSuffixScratch; std::vector visualOrderScratch; - void applyParagraphIndent(); - int resolveFirstLineIndent(bool isFirstLine) const; + int resolveFirstLineIndent(bool isFirstLine, const GfxRenderer& renderer, int fontId) const; std::vector computeLineBreaks(const GfxRenderer& renderer, int fontId, int pageWidth, std::vector& wordWidths, std::vector& continuesVec); std::vector computeHyphenatedLineBreaks(const GfxRenderer& renderer, int fontId, int pageWidth, diff --git a/lib/Epub/Epub/Section.cpp b/lib/Epub/Epub/Section.cpp index 4ccfac0f..c13da526 100644 --- a/lib/Epub/Epub/Section.cpp +++ b/lib/Epub/Epub/Section.cpp @@ -10,7 +10,7 @@ #include "parsers/ChapterHtmlSlimParser.h" namespace { -constexpr uint8_t SECTION_FILE_VERSION = 25; +constexpr uint8_t SECTION_FILE_VERSION = 26; constexpr uint32_t HEADER_SIZE = sizeof(uint8_t) + sizeof(int) + sizeof(float) + sizeof(bool) + sizeof(uint8_t) + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(uint16_t) + sizeof(bool) + sizeof(bool) + sizeof(uint8_t) + sizeof(bool) + sizeof(uint32_t) + sizeof(uint32_t) + diff --git a/lib/Epub/Epub/blocks/BlockStyle.h b/lib/Epub/Epub/blocks/BlockStyle.h index 23ed790b..fbc18d42 100644 --- a/lib/Epub/Epub/blocks/BlockStyle.h +++ b/lib/Epub/Epub/blocks/BlockStyle.h @@ -115,7 +115,7 @@ struct BlockStyle { blockStyle.paddingRight = std::min(cssStyle.paddingRight.toPixelsInt16(emSize, vw), maxHorizontalInsetPx); // For textIndent: if it's a percentage we can't resolve (no viewport width), - // leave textIndentDefined=false so the EmSpace fallback in applyParagraphIndent() is used + // leave textIndentDefined=false so the space-width fallback in resolveFirstLineIndent() is used if (cssStyle.hasTextIndent() && cssStyle.textIndent.isResolvable(vw)) { blockStyle.textIndent = cssStyle.textIndent.toPixelsInt16(emSize, vw); blockStyle.textIndentDefined = true; diff --git a/lib/Epub/Epub/blocks/TextBlock.cpp b/lib/Epub/Epub/blocks/TextBlock.cpp index 96c96f51..9260fa32 100644 --- a/lib/Epub/Epub/blocks/TextBlock.cpp +++ b/lib/Epub/Epub/blocks/TextBlock.cpp @@ -61,31 +61,14 @@ void TextBlock::render(const GfxRenderer& renderer, const int fontId, const int if (!scanning && (currentStyle & EpdFontFamily::UNDERLINE) != 0) { const std::string& w = words[i]; - const int fullWordWidth = renderer.getTextWidth(fontId, w.c_str(), currentStyle, baseDir); - // y is the top of the text line; add ascender to reach baseline, then offset 2px below + int underlineWidth = renderer.getTextWidth(fontId, w.c_str(), currentStyle, baseDir); const int underlineY = wordY + ascender + 2; - int startX = wordX; - int underlineWidth = fullWordWidth; - - // if word starts with em-space ("\xe2\x80\x83"), account for the additional indent before drawing the line - if (w.size() >= 3 && static_cast(w[0]) == 0xE2 && static_cast(w[1]) == 0x80 && - static_cast(w[2]) == 0x83) { - const char* visiblePtr = w.c_str() + 3; - const int prefixWidth = renderer.getTextAdvanceX(fontId, "\xe2\x80\x83", currentStyle); - const int visibleWidth = renderer.getTextWidth(fontId, visiblePtr, currentStyle, baseDir); - startX = wordX + prefixWidth; - underlineWidth = visibleWidth; - } - - // SUP/SUB words are rendered at 50% glyph scale (see the baseline comment - // above and drawText), but getTextWidth reports the full-size width, so the - // underline would be drawn ~2x too long. Halve it to match the scaled glyphs. if ((currentStyle & (EpdFontFamily::SUP | EpdFontFamily::SUB)) != 0) { underlineWidth = (underlineWidth + 1) / 2; } - renderer.drawLine(startX, underlineY, startX + underlineWidth, underlineY, true); + renderer.drawLine(wordX, underlineY, wordX + underlineWidth, underlineY, true); } } } diff --git a/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp b/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp index d344ad73..c4b0ccd5 100644 --- a/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp +++ b/lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp @@ -22,6 +22,13 @@ constexpr size_t MIN_SIZE_FOR_POPUP = 10 * 1024; // 10KB constexpr size_t PARSE_BUFFER_SIZE = 1024; +// Hard cap on the number of anchor IDs recorded per chapter. Legitimate navigation +// anchors (TOC entries, footnotes, cross-references) rarely exceed a few hundred per +// chapter. A runaway count usually means a converter injected machine-generated IDs on +// every text fragment (e.g. Kobo KePub spans). The cap prevents unbounded heap growth +// on resource-constrained devices (~380KB heap). TOC anchors bypass this cap. +constexpr size_t MAX_ANCHORS_PER_CHAPTER = 1024; + constexpr const char* HEADER_TAGS[] = {"h1", "h2", "h3", "h4", "h5", "h6"}; constexpr const char* BLOCK_TAGS[] = {"p", "li", "div", "br", "blockquote"}; constexpr const char* BOLD_TAGS[] = {"b", "strong"}; @@ -49,6 +56,14 @@ const char* getAttribute(const XML_Char** atts, const char* attrName) { return nullptr; } +// Returns true if the HTML element is a purely inline, non-navigable wrapper. +// IDs on these elements are never meaningful navigation targets in epub content. +// Reading-system converters (Kobo KePub, Calibre, etc.) frequently inject thousands +// of such IDs for progress tracking or internal bookkeeping, and recording each one +// as a navigation anchor exhausts the heap on memory-constrained devices. +// Block-level, sectioning, and structural elements are always considered navigable. +bool isNonNavigableInlineElement(const char* name) { return strcmp(name, "span") == 0; } + bool isInternalEpubLink(const char* href) { if (!href || href[0] == '\0') return false; if (strncmp(href, "http://", 7) == 0 || strncmp(href, "https://", 8) == 0) return false; @@ -293,7 +308,17 @@ void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* } else if (strcmp(atts[i], "id") == 0) { // Defer both anchor recording and TOC page breaks until startNewTextBlock, // after the previous block is flushed to pages via makePages(). - self->pendingAnchorId = atts[i + 1]; + // + // Skip IDs on non-navigable inline elements (e.g. ): these are never + // link targets in epub content, but reading-system converters can inject tens + // of thousands of them per chapter, exhausting the heap. TOC anchors are + // always recorded regardless of element type, since they drive page breaks. + const char* idValue = atts[i + 1]; + const bool isTocAnchor = + std::find(self->tocAnchors.begin(), self->tocAnchors.end(), idValue) != self->tocAnchors.end(); + if (isTocAnchor || (!isNonNavigableInlineElement(name) && self->anchorData.size() < MAX_ANCHORS_PER_CHAPTER)) { + self->pendingAnchorId = idValue; + } } else if (strcmp(atts[i], "dir") == 0) { dirAttr = atts[i + 1]; } @@ -733,7 +758,7 @@ void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* entry.depth = self->depth; entry.hasUnderline = true; entry.underline = true; - ChapterHtmlSlimParser::applyDirectionToEntry(entry, cssStyle); + applyDirectionToEntry(entry, cssStyle); self->inlineStyleStack.push_back(entry); self->updateEffectiveInlineStyle(); @@ -818,7 +843,7 @@ void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* entry.hasItalic = true; entry.italic = cssStyle.fontStyle == CssFontStyle::Italic; } - ChapterHtmlSlimParser::applyDirectionToEntry(entry, cssStyle); + applyDirectionToEntry(entry, cssStyle); self->inlineStyleStack.push_back(entry); self->updateEffectiveInlineStyle(); } else if (matches(name, BOLD_TAGS, std::size(BOLD_TAGS))) { @@ -841,7 +866,7 @@ void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* entry.hasUnderline = true; entry.underline = cssStyle.textDecoration == CssTextDecoration::Underline; } - ChapterHtmlSlimParser::applyDirectionToEntry(entry, cssStyle); + applyDirectionToEntry(entry, cssStyle); self->inlineStyleStack.push_back(entry); self->updateEffectiveInlineStyle(); } else if (matches(name, ITALIC_TAGS, std::size(ITALIC_TAGS))) { @@ -864,7 +889,7 @@ void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* entry.hasUnderline = true; entry.underline = cssStyle.textDecoration == CssTextDecoration::Underline; } - ChapterHtmlSlimParser::applyDirectionToEntry(entry, cssStyle); + applyDirectionToEntry(entry, cssStyle); self->inlineStyleStack.push_back(entry); self->updateEffectiveInlineStyle(); } else if (strcmp(name, "sup") == 0 || strcmp(name, "sub") == 0) { @@ -906,7 +931,7 @@ void XMLCALL ChapterHtmlSlimParser::startElement(void* userData, const XML_Char* entry.hasUnderline = true; entry.underline = cssStyle.textDecoration == CssTextDecoration::Underline; } - ChapterHtmlSlimParser::applyDirectionToEntry(entry, cssStyle); + applyDirectionToEntry(entry, cssStyle); if (cssStyle.hasVerticalAlign()) { if (cssStyle.verticalAlign == CssVerticalAlign::Super) { entry.hasSup = true; diff --git a/lib/I18n/translations/english.yaml b/lib/I18n/translations/english.yaml index 67021f31..2ad915ba 100644 --- a/lib/I18n/translations/english.yaml +++ b/lib/I18n/translations/english.yaml @@ -318,6 +318,7 @@ STR_BOOK_S_STYLE: "Book's Style" STR_EMBEDDED_STYLE: "Embedded Style" STR_FOCUS_READING: "Focus Reading" STR_OPDS_SERVER_URL: "OPDS Server URL" +STR_PWR_BTN_FOOTNOTE_BACK: "Quick-return from footnotes" STR_SET_SLEEP_COVER: "Set Cover" STR_FOOTNOTES: "Footnotes" STR_NO_FOOTNOTES: "No footnotes on this page" diff --git a/lib/I18n/translations/german.yaml b/lib/I18n/translations/german.yaml index d04dad9d..f289c13b 100644 --- a/lib/I18n/translations/german.yaml +++ b/lib/I18n/translations/german.yaml @@ -128,7 +128,7 @@ STR_PAGE_TURN: "Umblättern" STR_FORCE_REFRESH: "Bildschirm regenerieren" STR_PORTRAIT: "Hochformat" STR_LANDSCAPE_CW: "Querformat rechts" -STR_INVERTED: "Hochformat 180 Grad" +STR_INVERTED: "Hochformat 180°" STR_LANDSCAPE_CCW: "Querformat links" STR_PREV_NEXT: "Zurück/Weiter" STR_NEXT_PREV: "Weiter/Zurück" diff --git a/lib/I18n/translations/russian.yaml b/lib/I18n/translations/russian.yaml index 657385f4..ed167525 100644 --- a/lib/I18n/translations/russian.yaml +++ b/lib/I18n/translations/russian.yaml @@ -123,6 +123,7 @@ STR_CHECK_SERIAL_OUTPUT: "Проверьте вывод по UART для дет STR_DARK: "Тёмный" STR_LIGHT: "Светлый" STR_CUSTOM: "Свой" +STR_PWR_BTN_FOOTNOTE_BACK: "Быстрый возврат из примечаний" STR_COVER: "Обложка" STR_NONE_OPT: "Нет" STR_FIT: "Вписать" diff --git a/lib/I18n/translations/slovak.yaml b/lib/I18n/translations/slovak.yaml new file mode 100644 index 00000000..0d6eccbf --- /dev/null +++ b/lib/I18n/translations/slovak.yaml @@ -0,0 +1,378 @@ +_language_name: "Slovenčina" +_language_code: "SK" +_order: "24" + +STR_CROSSPOINT: "CrossPoint" +STR_BOOTING: "SPÚŠŤANIE" +STR_SLEEPING: "SPÁNOK" +STR_ENTERING_SLEEP: "Prechod do režimu spánku" +STR_BROWSE_FILES: "Prehliadať súbory" +STR_FILE_TRANSFER: "Prenos súborov" +STR_SETTINGS_TITLE: "Nastavenia" +STR_CONTINUE_READING: "Pokračovať v čítaní" +STR_NO_OPEN_BOOK: "Žiadna otvorená kniha" +STR_START_READING: "Začnite čítať nižšie" +STR_NO_FILES_FOUND: "Neboli nájdené žiadne súbory" +STR_SELECT_CHAPTER: "Vybrať kapitolu" +STR_NO_CHAPTERS: "Žiadne kapitoly" +STR_END_OF_BOOK: "Koniec knihy" +STR_EMPTY_CHAPTER: "Prázdna kapitola" +STR_INDEXING: "Indexovanie" +STR_MEMORY_ERROR: "Chyba pamäte" +STR_PAGE_LOAD_ERROR: "Chyba načítania stránky" +STR_EMPTY_FILE: "Prázdny súbor" +STR_OUT_OF_BOUNDS: "Mimo rozsahu" +STR_LOADING: "Načítava sa..." +STR_LOADING_POPUP: "Načítavanie" +STR_WIFI_NETWORKS: "Wi-Fi siete" +STR_NO_NETWORKS: "Nenašli sa žiadne siete" +STR_NETWORKS_FOUND: "Nájdených %zu sietí" +STR_SCANNING: "Skenovanie..." +STR_CONNECTING: "Pripájanie..." +STR_CONNECTED: "Pripojené!" +STR_CONNECTION_FAILED: "Pripojenie zlyhalo" +STR_FORGET_NETWORK: "Zabudnúť sieť?" +STR_SAVE_PASSWORD: "Uložiť heslo na nabudúce?" +STR_PRESS_OK_SCAN: "Stlačte OK pre opätovné skenovanie" +STR_JOIN_NETWORK: "Pripojiť sa k sieti" +STR_CREATE_HOTSPOT: "Vytvoriť hotspot" +STR_JOIN_DESC: "Pripojiť sa k existujúcej Wi-Fi sieti" +STR_HOTSPOT_DESC: "Vytvoriť Wi-Fi sieť, ku ktorej sa môžu pripojiť ostatní" +STR_STARTING_HOTSPOT: "Spúšťanie hotspotu..." +STR_HOTSPOT_MODE: "Režim hotspotu" +STR_CONNECT_WIFI_HINT: "Pripojte svoje zariadenie k tejto Wi-Fi sieti" +STR_OPEN_URL_HINT: "Otvorte túto URL adresu vo svojom prehliadači" +STR_OR_HTTP_PREFIX: "alebo http://" +STR_SCAN_QR_HINT: "alebo naskenujte QR kód telefónom:" +STR_CALIBRE_WIRELESS: "Calibre Wireless" +STR_NETWORK_LEGEND: "* = Šifrované | + = Uložené" +STR_MAC_ADDRESS: "MAC adresa:" +STR_CHECKING_WIFI: "Kontrola Wi-Fi..." +STR_ENTER_WIFI_PASSWORD: "Zadajte heslo Wi-Fi" +STR_TO_PREFIX: "pre" +STR_CALIBRE_RECEIVING: "Prijímanie:" +STR_CALIBRE_RECEIVED: "Prijaté:" +STR_CALIBRE_INSTRUCTION_1: "1) Nainštalujte plugin CrossPoint Reader" +STR_CALIBRE_INSTRUCTION_2: "2) Buďte v rovnakej Wi-Fi sieti" +STR_CALIBRE_INSTRUCTION_3: "3) V Calibre: „Odoslať do zariadenia“" +STR_CALIBRE_INSTRUCTION_4: "„Pri odosielaní nechajte túto obrazovku otvorenú“" +STR_CAT_DISPLAY: "Displej" +STR_CAT_READER: "Čítačka" +STR_CAT_CONTROLS: "Ovládanie" +STR_CAT_SYSTEM: "Systém" +STR_SLEEP_SCREEN: "Obrazovka spánku" +STR_QUICK_RESUME_TIMEOUT: "Rýchle obnovenie pri nečinnosti" +STR_SLEEP_COVER_MODE: "Obrazovka spánku – režim krytu" +STR_HIDE_BATTERY: "Skryť % batérie" +STR_EXTRA_SPACING: "Dodatočné medzery medzi odsekmi" +STR_TEXT_AA: "Vyhladzovanie textu" +STR_IMAGES: "Obrázky" +STR_IMAGES_DISPLAY: "Zobraz" +STR_IMAGES_PLACEHOLDER: "Rezervované miesto" +STR_IMAGES_SUPPRESS: "Potlačiť" +STR_SHORT_PWR_BTN: "Krátke stlačenie tlačidla napájania" +STR_ORIENTATION: "Orientácia čítania" +STR_SIDE_BTN_LAYOUT: "Rozloženie bočných tlačidiel (čítačka)" +STR_FRONT_BTN_FOLLOW_ORIENTATION: "Prispôsobiť predné tlačidlá orientácii" +STR_LONG_PRESS_BEHAVIOR: "Správanie pri dlhom stlačení tlačidla" +STR_LONG_PRESS_BEHAVIOR_OFF: "VYP" +STR_LONG_PRESS_BEHAVIOR_SKIP: "Preskočiť kapitolu" +STR_LONG_PRESS_BEHAVIOR_ORIENTATION: "Zmeniť orientáciu" +STR_FONT_FAMILY: "Rodina písiem čítačky" +STR_FONT_SIZE: "Veľkosť písma rozhrania" +STR_LINE_SPACING: "Riadkovanie čítačky" +STR_SCREEN_MARGIN: "Okraj obrazovky čítačky" +STR_PARA_ALIGNMENT: "Zarovnanie odsekov čítačky" +STR_HYPHENATION: "Delenie slov" +STR_TIME_TO_SLEEP: "Čas do uspania" +STR_SHOW_HIDDEN_FILES: "Zobraz Skryté Súbory" +STR_REMOVE_READ_FROM_RECENTS: "Odstrániť prečítané knihy zo zoznamu nedávnych" +STR_MOVE_FINISHED_TO_READ: "Presunúť prečítané knihy do priečinka Read" +STR_REFRESH_FREQ: "Frekvencia obnovovania" +STR_KOREADER_SYNC: "KOReader Sync" +STR_CHECK_UPDATES: "Skontrolovať aktualizácie" +STR_LANGUAGE: "Jazyk" +STR_CLEAR_READING_CACHE: "Vymazať vyrovnávaciu pamäť čítania" +STR_USERNAME: "Používateľské meno" +STR_PASSWORD: "Heslo" +STR_SYNC_SERVER_URL: "URL synchronizačného servera" +STR_DOCUMENT_MATCHING: "Párovanie dokumentov" +STR_AUTHENTICATE: "Overiť" +STR_KOREADER_USERNAME: "Používateľské meno KOReader" +STR_KOREADER_PASSWORD: "Heslo KOReader" +STR_FILENAME: "Názov súboru" +STR_BINARY: "Binárny" +STR_SET_CREDENTIALS_FIRST: "Najprv nastavte prihlasovacie údaje" +STR_WIFI_CONN_FAILED: "Pripojenie k Wi-Fi zlyhalo" +STR_AUTHENTICATING: "Overovanie..." +STR_AUTH_SUCCESS: "Overenie úspešné!" +STR_KOREADER_AUTH: "Overenie KOReader" +STR_SYNC_READY: "Synchronizácia KOReader je pripravená na použitie" +STR_AUTH_FAILED: "Overenie zlyhalo" +STR_DONE: "Hotovo" +STR_CLEAR_CACHE_WARNING_1: "Týmto vymažete všetky údaje kníh vo vyrovnávacej pamäti." +STR_CLEAR_CACHE_WARNING_2: "Všetok priebeh čítania bude stratený!" +STR_CLEAR_CACHE_WARNING_3: "Knihy bude potrebné znova indexovať" +STR_CLEAR_CACHE_WARNING_4: "pri ich opätovnom otvorení." +STR_CLEARING_CACHE: "Mazanie vyrovnávacej pamäte..." +STR_CACHE_CLEARED: "Vyrovnávacia pamäť vymazaná" +STR_ITEMS_REMOVED: "položiek odstránených" +STR_FAILED_LOWER: "zlyhalo" +STR_CLEAR_CACHE_FAILED: "Vymazanie vyrovnávacej pamäte zlyhalo" +STR_CHECK_SERIAL_OUTPUT: "Podrobnosti nájdete v sériovom výstupe" +STR_DARK: "Tmavý" +STR_LIGHT: "Svetlý" +STR_CUSTOM: "Vlastný" +STR_COVER: "Obálka" +STR_NONE_OPT: "Žiadny" +STR_FIT: "Prispôsobiť" +STR_CROP: "Orezať" +STR_NEVER: "Nikdy" +STR_IN_READER: "V čítačke" +STR_ALWAYS: "Vždy" +STR_IGNORE: "Ignorovať" +STR_SLEEP: "Spánok" +STR_PAGE_TURN: "Otáčanie stránok" +STR_FORCE_REFRESH: "Obnoviť obrazovku" +STR_PORTRAIT: "Na výšku" +STR_LANDSCAPE_CW: "Na šírku v smere hodinových ručičiek" +STR_INVERTED: "Obrátený" +STR_LANDSCAPE_CCW: "Na šírku proti smeru hodinových ručičiek" +STR_PREV_NEXT: "Predchádzajúca/Nasledujúca" +STR_NEXT_PREV: "Nasledujúca/Predchádzajúca" +STR_DISABLED: "Vypnuté" +STR_NOTO_SERIF: "Noto Serif" +STR_NOTO_SANS: "Noto Sans" +STR_SMALL: "Malý" +STR_MEDIUM: "Stredný" +STR_LARGE: "Veľký" +STR_X_LARGE: "Obrovský" +STR_TIGHT: "Tesný" +STR_NORMAL: "Normálny" +STR_WIDE: "Široký" +STR_JUSTIFY: "Zarovnať do bloku" +STR_ALIGN_LEFT: "Vľavo" +STR_CENTER: "Na stred" +STR_ALIGN_RIGHT: "Vpravo" +STR_PAGES_1: "1 strana" +STR_PAGES_5: "5 strán" +STR_PAGES_10: "10 strán" +STR_PAGES_15: "15 strán" +STR_PAGES_30: "30 strán" +STR_UPDATE: "Aktualizácia" +STR_CHECKING_UPDATE: "Kontrola aktualizácií…" +STR_NEW_UPDATE: "K dispozícii je nová aktualizácia!" +STR_CURRENT_VERSION: "Aktuálna verzia:" +STR_NEW_VERSION: "Nová verzia:" +STR_UPDATING: "Aktualizácia..." +STR_NO_UPDATE: "Nie je k dispozícii žiadna aktualizácia" +STR_UPDATE_FAILED: "Aktualizácia zlyhala" +STR_UPDATE_COMPLETE: "Aktualizácia dokončená" +STR_POWER_ON_HINT: "Stlačte a podržte tlačidlo napájania pre zapnutie" +STR_RESTARTING_HINT: "Reštartujem... Ak sa zariadenie nereštartuje, podrž tlačidlo na zapnutie niekoľko s." +STR_NO_ENTRIES: "Neboli nájdené žiadne položky" +STR_DOWNLOADING: "Sťahovanie..." +STR_DOWNLOAD_FAILED: "Sťahovanie zlyhalo" +STR_ERROR_MSG: "Chyba:" +STR_UNNAMED: "Nepomenované" +STR_HOLD_CONFIRM_TO_DELETE: "Podrž potvrdiť pre vymazanie" +STR_BOOKMARK_INSTRUCTIONS: "Podrž tlačidlo Potvrdiť pre vytvorenie záložky." +STR_NO_SERVER_URL: "Nie je nakonfigurovaná URL adresa servera" +STR_FETCH_FEED_FAILED: "Načítanie kanála zlyhalo" +STR_PARSE_FEED_FAILED: "Spracovanie kanála zlyhalo" +STR_NEXT_PAGE: "Ďaľsia strana »" +STR_PREV_PAGE: "« Predchádzajúca str." +STR_NETWORK_PREFIX: "Sieť:" +STR_IP_ADDRESS_PREFIX: "IP adresa:" +STR_ERROR_GENERAL_FAILURE: "Chyba: Všeobecná chyba" +STR_ERROR_NETWORK_NOT_FOUND: "Chyba: Sieť nebola nájdená" +STR_ERROR_CONNECTION_TIMEOUT: "Chyba: Časový limit pripojenia" +STR_SD_CARD: "SD karta" +STR_BACK: "« Späť" +STR_EXIT: "« Koniec" +STR_HOME: "« Domov" +STR_SELECT: "Vybrať" +STR_SELECTED: "Vybrané" +STR_TOGGLE: "Prepnúť" +STR_CONFIRM: "Potvrdiť" +STR_CANCEL: "Zrušiť" +STR_CONNECT: "Pripojiť" +STR_OPEN: "Otvoriť" +STR_DOWNLOAD: "Stiahnuť" +STR_RETRY: "Skúsiť znova" +STR_YES: "Áno" +STR_NO: "Nie" +STR_SHOW: "Zobraz" +STR_HIDE: "Skryť" +STR_STATE_ON: "ZAP" +STR_STATE_OFF: "VYP" +STR_NOT_SET: "Nenastavené" +STR_DIR_LEFT: "Vľavo" +STR_DIR_RIGHT: "Vpravo" +STR_DIR_UP: "Hore" +STR_DIR_DOWN: "Dole" +STR_OK_BUTTON: "OK" +STR_SLEEP_COVER_FILTER: "Filter obrazovky spánku" +STR_FILTER_CONTRAST: "Kontrast" +STR_CUSTOMISE_STATUS_BAR: "Uprav status bar" +STR_CHAPTER_PAGE_COUNT: "Počítadlo strán kapitoly" +STR_BOOK_PROGRESS_PERCENTAGE: "Prečítané percent" +STR_PROGRESS_BAR: "Ukazovateľ čítania" +STR_PROGRESS_BAR_THICKNESS: "Hrúbka indikátora priebehu" +STR_PROGRESS_BAR_THIN: "Tenký" +STR_PROGRESS_BAR_MEDIUM: "Stredný" +STR_PROGRESS_BAR_THICK: "Hrubý" +STR_BOOK: "Kniha" +STR_CHAPTER: "Kapitola" +STR_EXAMPLE_CHAPTER: "Kapitola 21" +STR_EXAMPLE_BOOK: "Názov knihy" +STR_PREVIEW: "Ukážka" +STR_TITLE: "Názov" +STR_BATTERY: "Batéria" +STR_XTC_STATUS_BAR: "Stavový panel XTC" +STR_BOTTOM: "Dole" +STR_TOP: "Hore" +STR_CLOCK: "Hodiny" +STR_CLOCK_UTC_OFFSET: "UTC posun hodín" +STR_CLOCK_FORMAT: "Formát času" +STR_CLOCK_FORMAT_24H: "24-hodinový" +STR_CLOCK_FORMAT_12H: "12-hodinový" +STR_CURRENT_TIME: "Aktuálny čas:" +STR_NEXT_FIELD: "Ďalej" +STR_CLOCK_SYNC: "Synchronizácia hodín" +STR_CLOCK_SYNC_NOW: "Synchronizovať teraz" +STR_CLOCK_SYNCING: "Synchronizácia cez NTP..." +STR_CLOCK_SYNC_OK: "Hodiny synchronizované" +STR_CLOCK_SYNC_FAIL: "Synchronizácia zlyhala" +STR_CLOCK_SYNC_NO_WIFI: "Wi-Fi nie je pripojená" +STR_CLOCK_SYNC_NO_WIFI_HINT: "Najprv sa pripojte k Wi-Fi a potom skúste znova." +STR_CLOCK_SYNCED: "Hodiny synchronizované" +STR_UI_THEME: "Téma rozhrania" +STR_THEME_CLASSIC: "Klasická" +STR_THEME_LYRA: "Lyra" +STR_THEME_ROUNDEDRAFF: "RoundedRaff" +STR_THEME_LYRA_EXTENDED: "Lyra Extended" +STR_SUNLIGHT_FADING_FIX: "Oprava blednutia na slnku" +STR_REMAP_FRONT_BUTTONS: "Premapovať predné tlačidlá" +STR_BOOKMARKS: "Záložky" +STR_BOOKMARK_ADDED: "Záložka pridaná." +STR_OPDS_BROWSER: "Prehliadač OPDS" +STR_SEARCH: "Hľadať" +STR_COVER_CUSTOM: "Obálka + Vlastné" +STR_QUICK_RESUME: "Rýchle obnovenie" +STR_MENU_RECENT_BOOKS: "Nedávne knihy" +STR_REMOVE_FROM_RECENTS: "Odstrániť z nedávnych kníh?" +STR_NO_RECENT_BOOKS: "Žiadne nedávne knihy" +STR_CALIBRE_DESC: "Používať bezdrôtové prenosy zariadení Calibre" +STR_FORGET_AND_REMOVE: "Zabudnúť sieť a odstrániť uložené heslo?" +STR_FORGET_BUTTON: "Zabudnúť" +STR_CALIBRE_STARTING: "Spúšťanie Calibre..." +STR_CALIBRE_SETUP: "Nastavenie" +STR_CALIBRE_STATUS: "Stav" +STR_CLEAR_BUTTON: "Vymazať" +STR_DEFAULT_VALUE: "Predvolené" +STR_REMAP_PROMPT: "Stlačte predné tlačidlo pre každú funkciu" +STR_UNASSIGNED: "Nepriradené" +STR_ALREADY_ASSIGNED: "Už priradené" +STR_REMAP_RESET_HINT: "Bočné tlačidlo Hore: Obnoviť predvolené rozloženie" +STR_REMAP_CANCEL_HINT: "Bočné tlačidlo Dole: Zrušiť premapovanie" +STR_HW_BACK_LABEL: "Späť (1. tlačidlo)" +STR_HW_CONFIRM_LABEL: "Potvrdiť (2. tlačidlo)" +STR_HW_LEFT_LABEL: "Vľavo (3. tlačidlo)" +STR_HW_RIGHT_LABEL: "Vpravo (4. tlačidlo)" +STR_GO_TO_PERCENT: "Prejsť na %" +STR_GO_HOME_BUTTON: "Prejsť na Domov" +STR_SYNC_PROGRESS: "Priebeh synchronizácie" +STR_DELETE_CACHE: "Vymazať vyrovnávaciu pamäť knihy" +STR_DELETE: "Vymazať" +STR_CONFIRM_DELETE_BOOKMARK: "Vymazať záložku?" +STR_DISPLAY_QR: "Zobraz stránku ako QR" +STR_CHAPTER_PREFIX: "Kapitola:" +STR_PAGES_SEPARATOR: "strán |" +STR_BOOK_PREFIX: "Kniha:" +STR_CALIBRE_URL_HINT: "Pre Calibre pridajte /opds na koniec URL adresy" +STR_PERCENT_STEP_HINT: "Vľavo/Vpravo: 1 % Hore/Dole: 10 %" +STR_SYNCING_TIME: "Čas synchronizácie..." +STR_CALC_HASH: "Výpočet hashu dokumentu..." +STR_HASH_FAILED: "Nepodarilo sa vypočítať hash dokumentu" +STR_FETCH_PROGRESS: "Načítavanie vzdialeného priebehu..." +STR_UPLOAD_PROGRESS: "Nahrávanie priebehu..." +STR_NO_CREDENTIALS_MSG: "Prihlasovacie údaje nie sú nastavené" +STR_KOREADER_SETUP_HINT: "Nastavte účet KOReader v Nastaveniach" +STR_PROGRESS_FOUND: "Priebeh nájdený!" +STR_REMOTE_LABEL: "Vzdialený:" +STR_LOCAL_LABEL: "Lokálny:" +STR_PAGE_OVERALL_FORMAT: "Strana %d, celkovo %.2f%%" +STR_PAGE_TOTAL_OVERALL_FORMAT: "Strana %d/%d, celkovo %.2f%%" +STR_DEVICE_FROM_FORMAT: " Zo zariadenia: %s" +STR_APPLY_REMOTE: "Použiť vzdialený priebeh" +STR_UPLOAD_LOCAL: "Nahrať lokálny priebeh" +STR_NO_REMOTE_MSG: "Nenašiel sa žiadny vzdialený priebeh" +STR_UPLOAD_PROMPT: "Nahrať aktuálnu pozíciu?" +STR_UPLOAD_SUCCESS: "Priebeh nahraný!" +STR_SYNC_FAILED_MSG: "Synchronizácia zlyhala" +STR_SAVE_PROGRESS_FAILED: "Nepodarilo sa uložiť priebeh" +STR_SECTION_PREFIX: "Sekcia" +STR_UPLOAD: "Nahrať" +STR_BOOK_S_STYLE: "Štýl knihy" +STR_EMBEDDED_STYLE: "Vložený štýl" +STR_FOCUS_READING: "Sústredené čítanie" +STR_OPDS_SERVER_URL: "URL adresa OPDS servera" +STR_SET_SLEEP_COVER: "Nastav obal" +STR_FOOTNOTES: "Poznámky pod čiarou" +STR_NO_FOOTNOTES: "Žiadne poznámky pod čiarou" +STR_LINK: "[link]" +STR_SCREENSHOT_BUTTON: "Urobiť snímku obrazovky" +STR_SLEEP_TIMER_VALUE_FORMAT: "%u min" +STR_SLEEP_NEVER: "Nikdy" +STR_SLEEP_TIMER_STEP_HINT: "Vľavo/Vpravo: 1 min Hore/Dole: 5 min" +STR_ADD_SERVER: "Pridať server" +STR_SERVER_NAME: "Názov servera" +STR_NO_SERVERS: "Nie sú nakonfigurované žiadne OPDS servery" +STR_DELETE_SERVER: "Odstrániť server" +STR_OPDS_SERVERS: "OPDS servery" +STR_AUTO_TURN_ENABLED: "Automatické otáčanie strán zapnuté: " +STR_AUTO_TURN_PAGES_PER_MIN: "Automatické otáčanie (strán za minútu)" +STR_MANAGE_FONTS: "Správa písiem" +STR_FONT_BROWSER: "Prehliadač písiem" +STR_LOADING_FONT_LIST: "Načítava sa zoznam písiem..." +STR_NO_FONTS_AVAILABLE: "Nie sú dostupné žiadne písma" +STR_FONT_INSTALLED: "Písmo nainštalované!" +STR_FONT_INSTALL_FAILED: "Inštalácia písma zlyhala" +STR_INSTALLED: "Nainštalované" +STR_DOWNLOAD_ALL: "Stiahnuť všetko" +STR_UPDATE_ALL: "Aktualizovať všetko" +STR_UPDATE_AVAILABLE: "Aktualizovať" +STR_CRASH_TITLE: "Zlyhanie systému" +STR_CRASH_DESCRIPTION: "Podrobná správa bola uložená do súboru crash_report.txt. Priložte tento súbor k hláseniu chyby." +STR_CRASH_REASON: "Dôvod zlyhania:" +STR_CRASH_NO_REASON: "(Nebola zaznamenaná žiadna príčina)" +STR_TILT_PAGE_TURN: "Otáčanie strán naklonením" +STR_KB_HINT_MOVE_CURSOR: "Stlačte VĽAVO alebo VPRAVO pre presun kurzora" +STR_KB_HINT_RETURN_CURSOR: "Stlačte VĽAVO pre návrat na pozíciu kurzora" +STR_KB_HINT_HIDE_PASSWORD: "Podržte VPRAVO a potom stlačte [***] na skrytie hesla" +STR_KB_HINT_SHOW_PASSWORD: "Podržte VPRAVO a potom stlačte [abc] na zobrazenie hesla" +STR_KB_HINT_TOGGLE_HIDE_PASSWORD: "Stlačte [***] na skrytie hesla" +STR_KB_HINT_TOGGLE_SHOW_PASSWORD: "Stlačte [abc] na zobrazenie hesla" +STR_KB_HINT_EDIT_ENTRY: "Podržte HORE pre úpravu položky" +STR_KB_TIPS: "Tipy:" +STR_KB_HINT_RETURN_KEYBOARD: "Stlačte DOLE pre návrat ku klávesnici" +STR_KB_HINT_EXIT_URL_MODE: "Stlačte ABC pre ukončenie režimu URL" +STR_KB_HINT_CLEAR_TEXT: "Podržte DEL pre vymazanie celého textu" +STR_KB_HINT_SECONDARY_CHAR: "Podržte SELECT pre alternatívny znak" +STR_KB_HINT_UPPER_SECONDARY: "Podržte SELECT pre VEĽKÉ písmeno alebo alternatívny znak" +STR_KB_HINT_LOWER_SECONDARY: "Podržte SELECT pre malé písmeno alebo alternatívny znak" +STR_KB_HINT_URL_SNIPPETS: "Stlačte URL pre úryvky" +STR_SD_FIRMWARE_UPDATE: "Aktualizácia firmvéru z SD karty" +STR_SELECT_FIRMWARE_FILE: "Vyberte súbor firmvéru (.bin)" +STR_NO_BIN_FILES: "Nenašli sa žiadne súbory .bin" +STR_VALIDATING_FIRMWARE: "Overuje sa firmvér..." +STR_INVALID_FIRMWARE: "Neplatný súbor firmvéru" +STR_FIRMWARE_TOO_LARGE: "Firmvér je príliš veľký pre partíciu" +STR_FIRMWARE_TOO_SMALL: "Súbor firmvéru je príliš malý" +STR_FIRMWARE_UPDATE_PROMPT: "Aktualizovať firmvér?" +STR_FIRMWARE_FILE_OPEN_FAILED: "Nie je možné otvoriť súbor" +STR_FIRMWARE_WRITE_FAILED: "Zápis firmvéru zlyhal" +STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Nevypínajte zariadenie!" +STR_RECOVERY_MODE: "Režim obnovenia" +STR_RECOVERY_MODE_HINT: "Umiestnite firmware.bin do koreňového adresára SD karty a vyberte ho" diff --git a/lib/I18n/translations/vietnamese.yaml b/lib/I18n/translations/vietnamese.yaml new file mode 100644 index 00000000..b4ab0578 --- /dev/null +++ b/lib/I18n/translations/vietnamese.yaml @@ -0,0 +1,378 @@ +_language_name: "Tiếng Việt" +_language_code: "VI" +_order: "25" + +STR_CROSSPOINT: "CrossPoint" +STR_BOOTING: "ĐANG KHỞI ĐỘNG" +STR_SLEEPING: "ĐANG NGỦ" +STR_ENTERING_SLEEP: "Đang vào chế độ ngủ" +STR_BROWSE_FILES: "Duyệt tập tin" +STR_FILE_TRANSFER: "Truyền tập tin" +STR_SETTINGS_TITLE: "Cài đặt" +STR_CONTINUE_READING: "Đọc tiếp" +STR_NO_OPEN_BOOK: "Chưa mở sách" +STR_START_READING: "Bắt đầu đọc bên dưới" +STR_NO_FILES_FOUND: "Không tìm thấy tập tin" +STR_SELECT_CHAPTER: "Chọn chương" +STR_NO_CHAPTERS: "Không có chương" +STR_END_OF_BOOK: "Hết sách" +STR_EMPTY_CHAPTER: "Chương trống" +STR_INDEXING: "Đang lập chỉ mục" +STR_MEMORY_ERROR: "Lỗi bộ nhớ" +STR_PAGE_LOAD_ERROR: "Lỗi tải trang" +STR_EMPTY_FILE: "Tập tin trống" +STR_OUT_OF_BOUNDS: "Vượt giới hạn" +STR_LOADING: "Đang tải..." +STR_LOADING_POPUP: "Đang tải" +STR_WIFI_NETWORKS: "Mạng Wi-Fi" +STR_NO_NETWORKS: "Không tìm thấy mạng" +STR_NETWORKS_FOUND: "Tìm thấy %zu mạng" +STR_SCANNING: "Đang quét..." +STR_CONNECTING: "Đang kết nối..." +STR_CONNECTED: "Đã kết nối!" +STR_CONNECTION_FAILED: "Kết nối thất bại" +STR_FORGET_NETWORK: "Quên mạng này?" +STR_SAVE_PASSWORD: "Lưu mật khẩu cho lần sau?" +STR_PRESS_OK_SCAN: "Nhấn OK để quét lại" +STR_JOIN_NETWORK: "Kết nối mạng" +STR_CREATE_HOTSPOT: "Tạo điểm phát" +STR_JOIN_DESC: "Kết nối tới mạng Wi-Fi có sẵn" +STR_HOTSPOT_DESC: "Tạo mạng Wi-Fi để máy khác kết nối" +STR_STARTING_HOTSPOT: "Đang tạo điểm phát..." +STR_HOTSPOT_MODE: "Chế độ điểm phát" +STR_CONNECT_WIFI_HINT: "Kết nối thiết bị của bạn vào mạng Wi-Fi này" +STR_OPEN_URL_HINT: "Mở URL này trong trình duyệt" +STR_OR_HTTP_PREFIX: "hoặc http://" +STR_SCAN_QR_HINT: "hoặc quét mã QR bằng điện thoại:" +STR_CALIBRE_WIRELESS: "Calibre không dây" +STR_NETWORK_LEGEND: "* = Mã hóa | + = Đã lưu" +STR_MAC_ADDRESS: "Địa chỉ MAC:" +STR_CHECKING_WIFI: "Đang kiểm tra Wi-Fi..." +STR_ENTER_WIFI_PASSWORD: "Nhập mật khẩu Wi-Fi" +STR_TO_PREFIX: "tới " +STR_CALIBRE_RECEIVING: "Đang nhận: " +STR_CALIBRE_RECEIVED: "Đã nhận: " +STR_CALIBRE_INSTRUCTION_1: "1) Cài plugin CrossPoint Reader" +STR_CALIBRE_INSTRUCTION_2: "2) Dùng chung một mạng Wi-Fi" +STR_CALIBRE_INSTRUCTION_3: "3) Trong Calibre: \"Send to device\"" +STR_CALIBRE_INSTRUCTION_4: "\"Giữ màn hình này khi đang gửi\"" +STR_CAT_DISPLAY: "Hiển thị" +STR_CAT_READER: "Trình đọc" +STR_CAT_CONTROLS: "Điều khiển" +STR_CAT_SYSTEM: "Hệ thống" +STR_SLEEP_SCREEN: "Màn hình ngủ" +STR_QUICK_RESUME_TIMEOUT: "Khôi phục nhanh khi hết giờ" +STR_SLEEP_COVER_MODE: "Kiểu ảnh bìa màn hình ngủ" +STR_HIDE_BATTERY: "Ẩn % pin" +STR_EXTRA_SPACING: "Giãn cách đoạn thêm" +STR_TEXT_AA: "Khử răng cưa chữ" +STR_IMAGES: "Hình ảnh" +STR_IMAGES_DISPLAY: "Hiển thị" +STR_IMAGES_PLACEHOLDER: "Khung thay thế" +STR_IMAGES_SUPPRESS: "Ẩn đi" +STR_SHORT_PWR_BTN: "Nhấn nhanh nút nguồn" +STR_ORIENTATION: "Hướng đọc" +STR_SIDE_BTN_LAYOUT: "Bố trí nút bên (trình đọc)" +STR_FRONT_BTN_FOLLOW_ORIENTATION: "Xoay nút trước theo hướng" +STR_LONG_PRESS_BEHAVIOR: "Hành vi nhấn giữ nút" +STR_LONG_PRESS_BEHAVIOR_OFF: "TẮT" +STR_LONG_PRESS_BEHAVIOR_SKIP: "Nhảy chương" +STR_LONG_PRESS_BEHAVIOR_ORIENTATION: "Đổi hướng" +STR_FONT_FAMILY: "Phông chữ trình đọc" +STR_FONT_SIZE: "Cỡ chữ trình đọc" +STR_LINE_SPACING: "Giãn dòng trình đọc" +STR_SCREEN_MARGIN: "Lề màn hình trình đọc" +STR_PARA_ALIGNMENT: "Canh lề đoạn trình đọc" +STR_HYPHENATION: "Ngắt từ bằng gạch nối" +STR_TIME_TO_SLEEP: "Thời gian chờ ngủ" +STR_SHOW_HIDDEN_FILES: "Hiện tập tin ẩn" +STR_REMOVE_READ_FROM_RECENTS: "Xóa sách đã đọc khỏi danh sách gần đây" +STR_MOVE_FINISHED_TO_READ: "Chuyển sách đọc xong vào thư mục Đã đọc" +STR_REFRESH_FREQ: "Tần suất làm tươi" +STR_KOREADER_SYNC: "Đồng bộ KOReader" +STR_CHECK_UPDATES: "Kiểm tra cập nhật" +STR_LANGUAGE: "Ngôn ngữ" +STR_CLEAR_READING_CACHE: "Xóa bộ nhớ đệm đọc" +STR_USERNAME: "Tên đăng nhập" +STR_PASSWORD: "Mật khẩu" +STR_SYNC_SERVER_URL: "URL máy chủ đồng bộ" +STR_DOCUMENT_MATCHING: "Khớp tài liệu" +STR_AUTHENTICATE: "Xác thực" +STR_KOREADER_USERNAME: "Tên đăng nhập KOReader" +STR_KOREADER_PASSWORD: "Mật khẩu KOReader" +STR_FILENAME: "Tên tập tin" +STR_BINARY: "Nhị phân" +STR_SET_CREDENTIALS_FIRST: "Hãy nhập thông tin đăng nhập trước" +STR_WIFI_CONN_FAILED: "Kết nối Wi-Fi thất bại" +STR_AUTHENTICATING: "Đang xác thực..." +STR_AUTH_SUCCESS: "Xác thực thành công!" +STR_KOREADER_AUTH: "Xác thực KOReader" +STR_SYNC_READY: "Đồng bộ KOReader đã sẵn sàng" +STR_AUTH_FAILED: "Xác thực thất bại" +STR_DONE: "Xong" +STR_CLEAR_CACHE_WARNING_1: "Thao tác này sẽ xóa toàn bộ dữ liệu sách đã lưu đệm." +STR_CLEAR_CACHE_WARNING_2: "Toàn bộ tiến độ đọc sẽ bị mất!" +STR_CLEAR_CACHE_WARNING_3: "Sách sẽ cần lập chỉ mục lại" +STR_CLEAR_CACHE_WARNING_4: "khi mở lại." +STR_CLEARING_CACHE: "Đang xóa bộ nhớ đệm..." +STR_CACHE_CLEARED: "Đã xóa bộ nhớ đệm" +STR_ITEMS_REMOVED: "mục đã xóa" +STR_FAILED_LOWER: "thất bại" +STR_CLEAR_CACHE_FAILED: "Không xóa được bộ nhớ đệm" +STR_CHECK_SERIAL_OUTPUT: "Xem chi tiết ở cổng serial" +STR_DARK: "Tối" +STR_LIGHT: "Sáng" +STR_CUSTOM: "Tùy chỉnh" +STR_COVER: "Ảnh bìa" +STR_NONE_OPT: "Không" +STR_FIT: "Vừa khung" +STR_CROP: "Cắt" +STR_NEVER: "Không bao giờ" +STR_IN_READER: "Trong trình đọc" +STR_ALWAYS: "Luôn luôn" +STR_IGNORE: "Bỏ qua" +STR_SLEEP: "Ngủ" +STR_PAGE_TURN: "Lật trang" +STR_FORCE_REFRESH: "Làm tươi màn hình" +STR_PORTRAIT: "Dọc" +STR_LANDSCAPE_CW: "Ngang (thuận)" +STR_INVERTED: "Lật ngược" +STR_LANDSCAPE_CCW: "Ngang (ngược)" +STR_PREV_NEXT: "Trước/Sau" +STR_NEXT_PREV: "Sau/Trước" +STR_DISABLED: "Tắt" +STR_NOTO_SERIF: "Noto Serif" +STR_NOTO_SANS: "Noto Sans" +STR_SMALL: "Nhỏ" +STR_MEDIUM: "Vừa" +STR_LARGE: "Lớn" +STR_X_LARGE: "Rất lớn" +STR_TIGHT: "Hẹp" +STR_NORMAL: "Bình thường" +STR_WIDE: "Rộng" +STR_JUSTIFY: "Đều hai bên" +STR_ALIGN_LEFT: "Trái" +STR_CENTER: "Giữa" +STR_ALIGN_RIGHT: "Phải" +STR_PAGES_1: "1 trang" +STR_PAGES_5: "5 trang" +STR_PAGES_10: "10 trang" +STR_PAGES_15: "15 trang" +STR_PAGES_30: "30 trang" +STR_UPDATE: "Cập nhật" +STR_CHECKING_UPDATE: "Đang kiểm tra cập nhật..." +STR_NEW_UPDATE: "Có bản cập nhật mới!" +STR_CURRENT_VERSION: "Phiên bản hiện tại: " +STR_NEW_VERSION: "Phiên bản mới: " +STR_UPDATING: "Đang cập nhật..." +STR_NO_UPDATE: "Không có bản cập nhật" +STR_UPDATE_FAILED: "Cập nhật thất bại" +STR_UPDATE_COMPLETE: "Cập nhật hoàn tất" +STR_POWER_ON_HINT: "Nhấn giữ nút nguồn để bật lại" +STR_RESTARTING_HINT: "Đang khởi động lại... Nếu máy không khởi động lại, hãy giữ nút nguồn vài giây." +STR_NO_ENTRIES: "Không tìm thấy mục nào" +STR_DOWNLOADING: "Đang tải về..." +STR_DOWNLOAD_FAILED: "Tải về thất bại" +STR_ERROR_MSG: "Lỗi:" +STR_UNNAMED: "Không tên" +STR_HOLD_CONFIRM_TO_DELETE: "Giữ Xác nhận để xóa" +STR_BOOKMARK_INSTRUCTIONS: "Giữ Xác nhận trong trình đọc để tạo dấu trang." +STR_NO_SERVER_URL: "Chưa cấu hình URL máy chủ" +STR_FETCH_FEED_FAILED: "Không tải được nguồn cấp" +STR_PARSE_FEED_FAILED: "Không phân tích được nguồn cấp" +STR_NEXT_PAGE: "Trang sau »" +STR_PREV_PAGE: "« Trang trước" +STR_NETWORK_PREFIX: "Mạng: " +STR_IP_ADDRESS_PREFIX: "Địa chỉ IP: " +STR_ERROR_GENERAL_FAILURE: "Lỗi: Sự cố chung" +STR_ERROR_NETWORK_NOT_FOUND: "Lỗi: Không tìm thấy mạng" +STR_ERROR_CONNECTION_TIMEOUT: "Lỗi: Kết nối quá thời gian" +STR_SD_CARD: "Thẻ SD" +STR_BACK: "« Quay lại" +STR_EXIT: "« Thoát" +STR_HOME: "« Thư viện" +STR_SELECT: "Chọn" +STR_SELECTED: "Đã chọn" +STR_TOGGLE: "Bật/Tắt" +STR_CONFIRM: "Xác nhận" +STR_CANCEL: "Hủy" +STR_CONNECT: "Kết nối" +STR_OPEN: "Mở" +STR_DOWNLOAD: "Tải về" +STR_RETRY: "Thử lại" +STR_YES: "Có" +STR_NO: "Không" +STR_SHOW: "Hiện" +STR_HIDE: "Ẩn" +STR_STATE_ON: "BẬT" +STR_STATE_OFF: "TẮT" +STR_NOT_SET: "Chưa đặt" +STR_DIR_LEFT: "Trái" +STR_DIR_RIGHT: "Phải" +STR_DIR_UP: "Lên" +STR_DIR_DOWN: "Xuống" +STR_OK_BUTTON: "OK" +STR_SLEEP_COVER_FILTER: "Bộ lọc ảnh bìa màn hình ngủ" +STR_FILTER_CONTRAST: "Tương phản" +STR_CUSTOMISE_STATUS_BAR: "Tùy chỉnh thanh trạng thái" +STR_CHAPTER_PAGE_COUNT: "Số trang trong chương" +STR_BOOK_PROGRESS_PERCENTAGE: "Phần trăm tiến độ sách" +STR_PROGRESS_BAR: "Thanh tiến độ" +STR_PROGRESS_BAR_THICKNESS: "Độ dày thanh tiến độ" +STR_PROGRESS_BAR_THIN: "Mỏng" +STR_PROGRESS_BAR_MEDIUM: "Vừa" +STR_PROGRESS_BAR_THICK: "Dày" +STR_BOOK: "Sách" +STR_CHAPTER: "Chương" +STR_EXAMPLE_CHAPTER: "Chương 21" +STR_EXAMPLE_BOOK: "Tên sách" +STR_PREVIEW: "Xem trước" +STR_TITLE: "Tiêu đề" +STR_BATTERY: "Pin" +STR_XTC_STATUS_BAR: "Thanh trạng thái XTC" +STR_BOTTOM: "Dưới" +STR_TOP: "Trên" +STR_CLOCK: "Đồng hồ" +STR_CLOCK_UTC_OFFSET: "Chênh lệch UTC" +STR_CLOCK_FORMAT: "Định dạng giờ" +STR_CLOCK_FORMAT_24H: "24 giờ" +STR_CLOCK_FORMAT_12H: "12 giờ" +STR_CURRENT_TIME: "Giờ hiện tại:" +STR_NEXT_FIELD: "Tiếp" +STR_CLOCK_SYNC: "Đồng bộ đồng hồ" +STR_CLOCK_SYNC_NOW: "Đồng bộ đồng hồ ngay" +STR_CLOCK_SYNCING: "Đang đồng bộ từ NTP..." +STR_CLOCK_SYNC_OK: "Đã đồng bộ đồng hồ" +STR_CLOCK_SYNC_FAIL: "Đồng bộ thất bại" +STR_CLOCK_SYNC_NO_WIFI: "Chưa kết nối Wi-Fi" +STR_CLOCK_SYNC_NO_WIFI_HINT: "Hãy kết nối Wi-Fi trước, rồi thử lại." +STR_CLOCK_SYNCED: "Đã đồng bộ đồng hồ" +STR_UI_THEME: "Giao diện" +STR_THEME_CLASSIC: "Cổ điển" +STR_THEME_LYRA: "Lyra" +STR_THEME_ROUNDEDRAFF: "RoundedRaff" +STR_THEME_LYRA_EXTENDED: "Lyra mở rộng" +STR_SUNLIGHT_FADING_FIX: "Khắc phục mờ dưới nắng" +STR_REMAP_FRONT_BUTTONS: "Gán lại nút mặt trước" +STR_BOOKMARKS: "Dấu trang" +STR_BOOKMARK_ADDED: "Đã thêm dấu trang." +STR_OPDS_BROWSER: "Trình duyệt OPDS" +STR_SEARCH: "Tìm kiếm" +STR_COVER_CUSTOM: "Ảnh bìa + Tùy chỉnh" +STR_QUICK_RESUME: "Khôi phục nhanh" +STR_MENU_RECENT_BOOKS: "Sách gần đây" +STR_REMOVE_FROM_RECENTS: "Xóa khỏi sách gần đây?" +STR_NO_RECENT_BOOKS: "Không có sách gần đây" +STR_CALIBRE_DESC: "Dùng truyền không dây của Calibre" +STR_FORGET_AND_REMOVE: "Quên mạng và xóa mật khẩu đã lưu?" +STR_FORGET_BUTTON: "Quên" +STR_CALIBRE_STARTING: "Đang khởi động Calibre..." +STR_CALIBRE_SETUP: "Thiết lập" +STR_CALIBRE_STATUS: "Trạng thái" +STR_CLEAR_BUTTON: "Xóa" +STR_DEFAULT_VALUE: "Mặc định" +STR_REMAP_PROMPT: "Nhấn một nút mặt trước cho mỗi vai trò" +STR_UNASSIGNED: "Chưa gán" +STR_ALREADY_ASSIGNED: "Đã được gán" +STR_REMAP_RESET_HINT: "Nút bên Lên: Đặt lại bố trí mặc định" +STR_REMAP_CANCEL_HINT: "Nút bên Xuống: Hủy gán lại" +STR_HW_BACK_LABEL: "Quay lại (nút 1)" +STR_HW_CONFIRM_LABEL: "Xác nhận (nút 2)" +STR_HW_LEFT_LABEL: "Trái (nút 3)" +STR_HW_RIGHT_LABEL: "Phải (nút 4)" +STR_GO_TO_PERCENT: "Đến vị trí %" +STR_GO_HOME_BUTTON: "Về trang chủ" +STR_SYNC_PROGRESS: "Đồng bộ tiến độ" +STR_DELETE_CACHE: "Xóa bộ nhớ đệm sách" +STR_DELETE: "Xóa" +STR_CONFIRM_DELETE_BOOKMARK: "Xóa dấu trang này?" +STR_DISPLAY_QR: "Hiện trang dạng QR" +STR_CHAPTER_PREFIX: "Chương: " +STR_PAGES_SEPARATOR: " trang | " +STR_BOOK_PREFIX: "Sách: " +STR_CALIBRE_URL_HINT: "Với Calibre, thêm /opds vào URL" +STR_PERCENT_STEP_HINT: "Trái/Phải: 1% Lên/Xuống: 10%" +STR_SYNCING_TIME: "Đang đồng bộ giờ..." +STR_CALC_HASH: "Đang tính mã băm tài liệu..." +STR_HASH_FAILED: "Không tính được mã băm tài liệu" +STR_FETCH_PROGRESS: "Đang lấy tiến độ từ máy chủ..." +STR_UPLOAD_PROGRESS: "Đang tải tiến độ lên..." +STR_NO_CREDENTIALS_MSG: "Chưa cấu hình thông tin đăng nhập" +STR_KOREADER_SETUP_HINT: "Thiết lập tài khoản KOReader trong Cài đặt" +STR_PROGRESS_FOUND: "Đã tìm thấy tiến độ!" +STR_REMOTE_LABEL: "Máy chủ:" +STR_LOCAL_LABEL: "Cục bộ:" +STR_PAGE_OVERALL_FORMAT: "Trang %d, %.2f%% toàn bộ" +STR_PAGE_TOTAL_OVERALL_FORMAT: "Trang %d/%d, %.2f%% toàn bộ" +STR_DEVICE_FROM_FORMAT: " Từ: %s" +STR_APPLY_REMOTE: "Áp dụng tiến độ máy chủ" +STR_UPLOAD_LOCAL: "Tải tiến độ cục bộ lên" +STR_NO_REMOTE_MSG: "Không có tiến độ trên máy chủ" +STR_UPLOAD_PROMPT: "Tải vị trí hiện tại lên?" +STR_UPLOAD_SUCCESS: "Đã tải tiến độ lên!" +STR_SYNC_FAILED_MSG: "Đồng bộ thất bại" +STR_SAVE_PROGRESS_FAILED: "Không lưu được tiến độ" +STR_SECTION_PREFIX: "Phần " +STR_UPLOAD: "Tải lên" +STR_BOOK_S_STYLE: "Kiểu của sách" +STR_EMBEDDED_STYLE: "Kiểu nhúng sẵn" +STR_FOCUS_READING: "Đọc tập trung" +STR_OPDS_SERVER_URL: "URL máy chủ OPDS" +STR_SET_SLEEP_COVER: "Đặt ảnh bìa" +STR_FOOTNOTES: "Chú thích" +STR_NO_FOOTNOTES: "Trang này không có chú thích" +STR_LINK: "[liên kết]" +STR_SCREENSHOT_BUTTON: "Chụp màn hình" +STR_SLEEP_TIMER_VALUE_FORMAT: "%u phút" +STR_SLEEP_NEVER: "Không bao giờ" +STR_SLEEP_TIMER_STEP_HINT: "Trái/Phải: 1 phút Lên/Xuống: 5 phút" +STR_ADD_SERVER: "Thêm máy chủ" +STR_SERVER_NAME: "Tên máy chủ" +STR_NO_SERVERS: "Chưa cấu hình máy chủ OPDS" +STR_DELETE_SERVER: "Xóa máy chủ" +STR_OPDS_SERVERS: "Máy chủ OPDS" +STR_AUTO_TURN_ENABLED: "Tự lật trang: " +STR_AUTO_TURN_PAGES_PER_MIN: "Tự lật (số trang mỗi phút)" +STR_MANAGE_FONTS: "Quản lý phông chữ" +STR_FONT_BROWSER: "Trình duyệt phông chữ" +STR_LOADING_FONT_LIST: "Đang tải danh sách phông..." +STR_NO_FONTS_AVAILABLE: "Không có phông chữ" +STR_FONT_INSTALLED: "Đã cài phông chữ!" +STR_FONT_INSTALL_FAILED: "Cài phông chữ thất bại" +STR_INSTALLED: "Đã cài" +STR_DOWNLOAD_ALL: "Tải tất cả" +STR_UPDATE_ALL: "Cập nhật tất cả" +STR_UPDATE_AVAILABLE: "Cập nhật" +STR_CRASH_TITLE: "Lỗi hệ thống" +STR_CRASH_DESCRIPTION: "Báo cáo chi tiết đã được lưu vào crash_report.txt. Vui lòng đính kèm tập tin này khi báo lỗi." +STR_CRASH_REASON: "Lý do lỗi:" +STR_CRASH_NO_REASON: "(Không ghi nhận lý do)" +STR_TILT_PAGE_TURN: "Lật trang khi nghiêng" +STR_KB_HINT_MOVE_CURSOR: "Nhấn TRÁI hoặc PHẢI để di chuyển con trỏ" +STR_KB_HINT_RETURN_CURSOR: "Nhấn TRÁI để quay lại vị trí con trỏ" +STR_KB_HINT_HIDE_PASSWORD: "Giữ PHẢI rồi nhấn [***] để ẩn mật khẩu" +STR_KB_HINT_SHOW_PASSWORD: "Giữ PHẢI rồi nhấn [abc] để hiện mật khẩu" +STR_KB_HINT_TOGGLE_HIDE_PASSWORD: "Nhấn [***] để ẩn mật khẩu" +STR_KB_HINT_TOGGLE_SHOW_PASSWORD: "Nhấn [abc] để hiện mật khẩu" +STR_KB_HINT_EDIT_ENTRY: "Giữ LÊN để sửa mục" +STR_KB_TIPS: "Mẹo:" +STR_KB_HINT_RETURN_KEYBOARD: "Nhấn XUỐNG để quay lại bàn phím" +STR_KB_HINT_EXIT_URL_MODE: "Nhấn ABC để thoát chế độ URL" +STR_KB_HINT_CLEAR_TEXT: "Giữ DEL để xóa toàn bộ chữ" +STR_KB_HINT_SECONDARY_CHAR: "Giữ CHỌN để nhập ký tự phụ" +STR_KB_HINT_UPPER_SECONDARY: "Giữ CHỌN để viết HOA hoặc ký tự phụ" +STR_KB_HINT_LOWER_SECONDARY: "Giữ CHỌN để viết thường hoặc ký tự phụ" +STR_KB_HINT_URL_SNIPPETS: "Nhấn URL để chèn mẫu" +STR_SD_FIRMWARE_UPDATE: "Cập nhật firmware từ thẻ SD" +STR_SELECT_FIRMWARE_FILE: "Chọn tập tin firmware (.bin)" +STR_NO_BIN_FILES: "Không tìm thấy tập tin .bin" +STR_VALIDATING_FIRMWARE: "Đang kiểm tra firmware..." +STR_INVALID_FIRMWARE: "Tập tin firmware không hợp lệ" +STR_FIRMWARE_TOO_LARGE: "Firmware quá lớn so với phân vùng" +STR_FIRMWARE_TOO_SMALL: "Tập tin firmware quá nhỏ" +STR_FIRMWARE_UPDATE_PROMPT: "Cập nhật firmware?" +STR_FIRMWARE_FILE_OPEN_FAILED: "Không mở được tập tin" +STR_FIRMWARE_WRITE_FAILED: "Ghi firmware thất bại" +STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Không được tắt nguồn!" +STR_RECOVERY_MODE: "Chế độ phục hồi" +STR_RECOVERY_MODE_HINT: "Đặt firmware.bin ở thư mục gốc thẻ SD rồi chọn" diff --git a/src/CrossPointSettings.h b/src/CrossPointSettings.h index 7df8c8ed..07413595 100644 --- a/src/CrossPointSettings.h +++ b/src/CrossPointSettings.h @@ -134,7 +134,7 @@ class CrossPointSettings { }; // Short power button press actions - enum SHORT_PWRBTN { IGNORE = 0, SLEEP = 1, PAGE_TURN = 2, FORCE_REFRESH = 3, SHORT_PWRBTN_COUNT }; + enum SHORT_PWRBTN { IGNORE = 0, SLEEP = 1, PAGE_TURN = 2, FORCE_REFRESH = 3, FOOTNOTES = 4, SHORT_PWRBTN_COUNT }; // Hide battery percentage enum HIDE_BATTERY_PERCENTAGE { HIDE_NEVER = 0, HIDE_READER = 1, HIDE_ALWAYS = 2, HIDE_BATTERY_PERCENTAGE_COUNT }; @@ -230,6 +230,8 @@ class CrossPointSettings { uint8_t uiTheme = LYRA; // Sunlight fading compensation uint8_t fadingFix = 0; + // Power button return from footnotes (1 = enabled, 0 = disabled) + uint8_t pwrBtnFootnoteBack = 1; // Use book's embedded CSS styles for EPUB rendering (1 = enabled, 0 = disabled) uint8_t embeddedStyle = 1; // Focus Reading - emphasizes the first part of words with bold diff --git a/src/SettingsList.h b/src/SettingsList.h index c7b223ea..acdba5bb 100644 --- a/src/SettingsList.h +++ b/src/SettingsList.h @@ -171,10 +171,12 @@ inline std::vector getSettingsList(const SdCardFontRegistry* regist {StrId::STR_LONG_PRESS_BEHAVIOR_OFF, StrId::STR_LONG_PRESS_BEHAVIOR_SKIP, StrId::STR_LONG_PRESS_BEHAVIOR_ORIENTATION}, "longPressButtonBehavior", StrId::STR_CAT_CONTROLS), - SettingInfo::Enum(StrId::STR_SHORT_PWR_BTN, &CrossPointSettings::shortPwrBtn, - {StrId::STR_IGNORE, StrId::STR_SLEEP, StrId::STR_PAGE_TURN, StrId::STR_FORCE_REFRESH}, - "shortPwrBtn", StrId::STR_CAT_CONTROLS), - + SettingInfo::Enum( + StrId::STR_SHORT_PWR_BTN, &CrossPointSettings::shortPwrBtn, + {StrId::STR_IGNORE, StrId::STR_SLEEP, StrId::STR_PAGE_TURN, StrId::STR_FORCE_REFRESH, StrId::STR_FOOTNOTES}, + "shortPwrBtn", StrId::STR_CAT_CONTROLS), + SettingInfo::Toggle(StrId::STR_PWR_BTN_FOOTNOTE_BACK, &CrossPointSettings::pwrBtnFootnoteBack, + "pwrBtnFootnoteBack", StrId::STR_CAT_CONTROLS), // --- System --- SettingInfo::Value( StrId::STR_TIME_TO_SLEEP, &CrossPointSettings::sleepTimeoutMinutes, diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index a5329290..08378ed3 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -312,6 +312,32 @@ void EpubReaderActivity::loop() { return; } + // auto [prevTriggered, nextTriggered] = ReaderUtils::detectPageTurn(mappedInput); + + // Handle short power button press for footnotes + if (SETTINGS.shortPwrBtn == CrossPointSettings::SHORT_PWRBTN::FOOTNOTES && + mappedInput.wasReleased(MappedInputManager::Button::Power) && + !mappedInput.wasReleased(MappedInputManager::Button::Down)) { + if (footnoteDepth > 0) { + restoreSavedPosition(); + } else { + if (currentPageFootnotes.size() == 1) { + navigateToHref(currentPageFootnotes[0].href, true); + } else if (currentPageFootnotes.size() > 1) { + startActivityForResult( + std::make_unique(renderer, mappedInput, currentPageFootnotes), + [this](const ActivityResult& result) { + if (!result.isCancelled) { + const auto& footnoteResult = std::get(result.data); + navigateToHref(footnoteResult.href, true); + } + requestUpdate(); + }); + } + } + return; + } + const auto [prevTriggered, nextTriggered, fromTilt] = ReaderUtils::detectPageTurn(mappedInput); if (!prevTriggered && !nextTriggered) { return; diff --git a/src/activities/reader/EpubReaderFootnotesActivity.cpp b/src/activities/reader/EpubReaderFootnotesActivity.cpp index a50163ae..390dd3c5 100644 --- a/src/activities/reader/EpubReaderFootnotesActivity.cpp +++ b/src/activities/reader/EpubReaderFootnotesActivity.cpp @@ -26,7 +26,8 @@ void EpubReaderFootnotesActivity::loop() { return; } - if (mappedInput.wasReleased(MappedInputManager::Button::Confirm)) { + if (mappedInput.wasReleased(MappedInputManager::Button::Confirm) || + mappedInput.wasReleased(MappedInputManager::Button::Power)) { if (selectedIndex >= 0 && selectedIndex < static_cast(footnotes.size())) { setResult(FootnoteResult{footnotes[selectedIndex].href}); finish(); diff --git a/src/activities/settings/SettingsActivity.cpp b/src/activities/settings/SettingsActivity.cpp index 5e8b5773..8c0a7ef6 100644 --- a/src/activities/settings/SettingsActivity.cpp +++ b/src/activities/settings/SettingsActivity.cpp @@ -46,6 +46,10 @@ void SettingsActivity::rebuildSettingsLists() { } else if (setting.category == StrId::STR_CAT_READER) { readerSettings.push_back(setting); } else if (setting.category == StrId::STR_CAT_CONTROLS) { + if (setting.valuePtr == &CrossPointSettings::pwrBtnFootnoteBack && + SETTINGS.shortPwrBtn != CrossPointSettings::SHORT_PWRBTN::FOOTNOTES) { + continue; + } controlsSettings.push_back(setting); } else if (setting.category == StrId::STR_CAT_SYSTEM) { systemSettings.push_back(setting); @@ -271,6 +275,8 @@ void SettingsActivity::toggleCurrentSetting() { syncQuickResumeTimeoutForSleepScreen(sleepScreenChanged, quickResumeTimeoutChanged); SETTINGS.saveToFile(); + rebuildSettingsLists(); + selectedSettingIndex = std::min(selectedSettingIndex, settingsCount); } void SettingsActivity::syncQuickResumeTimeoutForSleepScreen(bool sleepScreenChanged, bool quickResumeTimeoutChanged) { diff --git a/src/components/themes/BaseTheme.cpp b/src/components/themes/BaseTheme.cpp index 24cce04d..a4e35c35 100644 --- a/src/components/themes/BaseTheme.cpp +++ b/src/components/themes/BaseTheme.cpp @@ -658,8 +658,8 @@ void BaseTheme::drawRecentBookCover(GfxRenderer& renderer, Rect rect, const std: // No book to continue reading const int y = bookY + (bookHeight - renderer.getLineHeight(UI_12_FONT_ID) - renderer.getLineHeight(UI_10_FONT_ID)) / 2; - renderer.drawCenteredText(UI_12_FONT_ID, y, "No open book"); - renderer.drawCenteredText(UI_10_FONT_ID, y + renderer.getLineHeight(UI_12_FONT_ID), "Start reading below"); + renderer.drawCenteredText(UI_12_FONT_ID, y, tr(STR_NO_OPEN_BOOK)); + renderer.drawCenteredText(UI_10_FONT_ID, y + renderer.getLineHeight(UI_12_FONT_ID), tr(STR_START_READING)); } } diff --git a/src/network/html/SettingsPage.html b/src/network/html/SettingsPage.html index 4291a21b..8b3bee41 100644 --- a/src/network/html/SettingsPage.html +++ b/src/network/html/SettingsPage.html @@ -479,8 +479,23 @@ return changed; } + function updateSettingsVisibility() { + const shortPwrBtnVal = getControlValue('shortPwrBtn'); + const pwrBtnFootnoteBackRow = document.getElementById('row-setting-pwrBtnFootnoteBack'); + if (pwrBtnFootnoteBackRow) { + if (shortPwrBtnVal === 4) { + pwrBtnFootnoteBackRow.style.display = ''; + } else { + pwrBtnFootnoteBackRow.style.display = 'none'; + } + } + } + function handleSettingChanged(key) { syncQuickResumeTimeoutForSleepScreen(key === 'sleepScreen', key === 'quickResumeSleepScreen'); + if (key === 'shortPwrBtn') { + updateSettingsVisibility(); + } markChanged(); } @@ -511,7 +526,7 @@ for (const category in groups) { html += '

' + escapeHtml(category) + '

'; groups[category].forEach(function(s) { - html += '
' + + html += '
' + '' + escapeHtml(s.name) + '' + '' + renderControl(s) + '' + '
'; @@ -520,6 +535,7 @@ } container.innerHTML = html; + updateSettingsVisibility(); document.getElementById('save-container').style.display = ''; document.getElementById('saveBtn').disabled = true; preserveQuickResumeTimeoutOn = getControlValue('quickResumeSleepScreen') === 1;