Files
crosspoint-reader-mod/lib/EpdFont/builtinFonts/ubuntu_10_bold.h

2599 lines
228 KiB
C
Raw Normal View History

Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
/**
* generated by fontconvert.py
* name: ubuntu_10_bold
* size: 10
* mode: 1-bit
* Command used: fontconvert.py ubuntu_10_bold 10 ../builtinFonts/source/Ubuntu/Ubuntu-Bold.ttf
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
*/
#pragma once
#include "EpdFontData.h"
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
static const uint8_t ubuntu_10_boldBitmaps[14043] = {
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
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,
0x03, 0xF8, 0x3F, 0xC3, 0xFC, 0x1F, 0x80, 0xF7, 0x1E, 0xFF, 0xDF, 0xFB, 0xFC, 0x0F, 0x01, 0xE0,
0x3C, 0x00, 0x3E, 0x0E, 0x0F, 0xE3, 0xC1, 0xDC, 0xF0, 0x7B, 0xDE, 0x0F, 0x7F, 0x80, 0xEE, 0xF0,
0x1F, 0xFC, 0x01, 0xF7, 0x7C, 0x01, 0xFF, 0xC0, 0x3B, 0xBC, 0x0F, 0x73, 0x81, 0xCE, 0x70, 0x79,
0xDE, 0x1E, 0x3F, 0x83, 0xC3, 0xE0, 0x1F, 0x80, 0x7F, 0x80, 0xFF, 0x81, 0xEF, 0x03, 0xDE, 0x07,
0xF8, 0x07, 0xE0, 0x1F, 0xDE, 0x7F, 0xBC, 0xE7, 0xF3, 0xC7, 0xE7, 0xC7, 0xC7, 0xFF, 0x8F, 0xFF,
0x8F, 0xF7, 0x80, 0xFF, 0xEE, 0xEE, 0x1C, 0x3C, 0xF1, 0xE7, 0x8F, 0x1C, 0x78, 0xF1, 0xE3, 0xC7,
0x8F, 0x0E, 0x1E, 0x3C, 0x3C, 0x78, 0x78, 0xE0, 0x63, 0xCF, 0x1E, 0x78, 0xF3, 0xCF, 0x3C, 0x71,
0xCF, 0x3C, 0xF3, 0xDE, 0x7B, 0xCF, 0x18, 0x0E, 0x03, 0x87, 0xF9, 0xFF, 0x7F, 0xCF, 0xC3, 0xF8,
0x6C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0xFF, 0xFF, 0xFF, 0xFC, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7B,
0xDE, 0xEF, 0x78, 0xFF, 0xFF, 0xF8, 0x77, 0xFE, 0xE0, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C,
0x0F, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78,
0x0F, 0x01, 0xE0, 0x78, 0x00, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0xBE, 0x79, 0xEF, 0x1E, 0xF0, 0xFF,
0x0F, 0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0xBE, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x0F, 0x1F, 0x3F, 0x7F,
0xFF, 0x7F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x3F, 0x8F, 0xF9, 0xFF, 0xBD,
0xF2, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0xFE, 0xFF, 0xDF, 0xF8,
0x3F, 0x8F, 0xF9, 0xFF, 0x39, 0xE0, 0x3C, 0x0F, 0x87, 0xE0, 0xFE, 0x03, 0xE0, 0x3C, 0x07, 0xB1,
0xF7, 0xFD, 0xFF, 0x9F, 0xE0, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFC, 0x1F, 0xC3, 0xFC, 0x3B, 0xC7,
0xBC, 0xF3, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3F, 0xE7, 0xFC, 0xFF,
0x9C, 0x03, 0x80, 0x7E, 0x1F, 0xF3, 0xFE, 0x0F, 0xE0, 0x3C, 0x07, 0xB1, 0xF7, 0xFC, 0xFF, 0x9F,
0xE0, 0x03, 0xC0, 0xFE, 0x1F, 0xE3, 0xF8, 0x78, 0x07, 0xF8, 0x7F, 0xE7, 0xFE, 0xF9, 0xEF, 0x0F,
0x78, 0xE7, 0xDE, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x7F, 0xE7, 0xFE, 0x7F, 0xE0, 0x3E, 0x03, 0xC0,
0x78, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0x1F,
0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x7F, 0xC3, 0xFC, 0x3F, 0xE7, 0xBE, 0x70, 0xE7,
0x9E, 0x7F, 0xE7, 0xFE, 0x3F, 0x80, 0x1F, 0x83, 0xFC, 0x7F, 0xEF, 0xBE, 0xF1, 0xEF, 0x1E, 0xF9,
0xE7, 0xFE, 0x7F, 0xE3, 0xFE, 0x01, 0xE0, 0xFC, 0x7F, 0xC7, 0xF0, 0x7E, 0x00, 0x77, 0xFE, 0xE0,
0x00, 0x0E, 0xFF, 0xDC, 0x77, 0xFE, 0xE0, 0x00, 0x00, 0x7B, 0xDE, 0xEF, 0x78, 0x01, 0xC3, 0xF3,
0xFF, 0xFE, 0xFE, 0x3C, 0x0F, 0xE3, 0xFE, 0x3F, 0xC3, 0xF0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFC, 0x00,
0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF1, 0xFF, 0x1F, 0xC1, 0xF1, 0xFD, 0xFF, 0xFF,
0x3F, 0x0E, 0x00, 0x7F, 0x3F, 0xEF, 0xF9, 0x9E, 0x07, 0x81, 0xE0, 0xF8, 0x7C, 0x1E, 0x0F, 0x03,
0xC0, 0x00, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x07, 0xFC, 0x03, 0xFF, 0xE0, 0xFC, 0x7E, 0x3E, 0x03,
0xE7, 0x3F, 0xDD, 0xEF, 0xFB, 0xB9, 0xEF, 0x7F, 0x79, 0xE7, 0xEF, 0x3C, 0xFD, 0xE7, 0xBF, 0xBC,
0xF7, 0x73, 0xDE, 0xEF, 0x7F, 0xF8, 0xE7, 0xFE, 0x1E, 0x00, 0x01, 0xF8, 0xC0, 0x1F, 0xFC, 0x00,
0xFF, 0x80, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x07, 0xBC, 0x0E,
0x3C, 0x3C, 0x78, 0x7F, 0xF1, 0xFF, 0xF3, 0xFF, 0xE7, 0x83, 0xDE, 0x03, 0xFC, 0x07, 0x80, 0xFF,
0xC7, 0xFF, 0x3F, 0xFD, 0xE3, 0xEF, 0x1F, 0x7F, 0xF3, 0xFF, 0x9F, 0xFE, 0xF1, 0xF7, 0x87, 0xBC,
0x3D, 0xE3, 0xEF, 0xFF, 0x7F, 0xF3, 0xFF, 0x00, 0x0F, 0xF1, 0xFF, 0x9F, 0xFC, 0xFD, 0xEF, 0x80,
0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3E, 0x01, 0xF8, 0xE7, 0xFF, 0x1F, 0xF8, 0x7F,
0xC0, 0xFF, 0xC3, 0xFF, 0x8F, 0xFF, 0x3C, 0x7E, 0xF0, 0x7B, 0xC1, 0xFF, 0x03, 0xFC, 0x0F, 0xF0,
0x3F, 0xC1, 0xFF, 0x07, 0xBC, 0x7E, 0xFF, 0xF3, 0xFF, 0x8F, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xF8, 0x0F, 0x01, 0xE0, 0x3F, 0xF7, 0xFE, 0xFF, 0xDE, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xFF, 0xFF,
0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0x01, 0xE0, 0x3F, 0xF7, 0xFE, 0xFF, 0xDE, 0x03, 0xC0,
0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0xF1, 0xFF, 0x9F, 0xFC, 0xFC, 0xEF, 0x80, 0x78, 0x03,
0xC0, 0x1E, 0x0F, 0xF0, 0x7F, 0x83, 0xFE, 0x1E, 0xF8, 0xF7, 0xFF, 0x9F, 0xFC, 0x7F, 0xC0, 0xF0,
0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0xFC,
0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3D, 0x9F, 0xFF,
0xFF, 0xE7, 0xF0, 0xF0, 0xFB, 0xC7, 0xCF, 0x3E, 0x3D, 0xF0, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x3F,
0xC0, 0xFF, 0x83, 0xDF, 0x0F, 0x3C, 0x3C, 0xF8, 0xF1, 0xF3, 0xC3, 0xCF, 0x0F, 0x80, 0xF0, 0x1E,
0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0xFF,
0xFF, 0xFF, 0xF8, 0x78, 0x0F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0xC7, 0xE7, 0xE3, 0xF7, 0xF1, 0xFB,
0xFD, 0xFD, 0xEE, 0xEF, 0xF7, 0xF7, 0xFB, 0xF3, 0xFC, 0xF9, 0xFE, 0x7C, 0xFF, 0x1C, 0x7F, 0x80,
0x3F, 0xC0, 0x1E, 0xF0, 0x3F, 0xE0, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x3F, 0xFC, 0xFF, 0x7B, 0xFD,
0xEF, 0xF3, 0xFF, 0xC7, 0xFF, 0x1F, 0xFC, 0x3F, 0xF0, 0x7F, 0xC1, 0xFF, 0x03, 0xC0, 0x0F, 0xE0,
0x7F, 0xE1, 0xFF, 0xE3, 0xE7, 0xEF, 0x83, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0,
0x7F, 0xE0, 0xF3, 0xE7, 0xE7, 0xFF, 0x87, 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0xCF, 0xFE, 0xFF, 0xFF,
0x1F, 0xF0, 0xFF, 0x0F, 0xF3, 0xFF, 0xFF, 0xFF, 0xEF, 0xFC, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00,
0xF0, 0x00, 0x0F, 0xE0, 0x7F, 0xE1, 0xFF, 0xE3, 0xE7, 0xEF, 0x83, 0xDE, 0x07, 0xFC, 0x07, 0xF8,
0x0F, 0xF0, 0x1F, 0xE0, 0x7F, 0xE0, 0xF3, 0xE7, 0xE7, 0xFF, 0x87, 0xFF, 0x07, 0xF8, 0x01, 0xF8,
0x01, 0xFC, 0x01, 0xF0, 0xFF, 0x87, 0xFF, 0x3F, 0xF9, 0xE7, 0xEF, 0x0F, 0x78, 0x7B, 0xCF, 0xDF,
0xFE, 0xFF, 0xE7, 0xFE, 0x3C, 0xF1, 0xE7, 0xCF, 0x1F, 0x78, 0x7B, 0xC3, 0xE0, 0x1F, 0xC3, 0xFE,
0x7F, 0xE7, 0xCC, 0x78, 0x07, 0xC0, 0x7F, 0x83, 0xFC, 0x0F, 0xE0, 0x1F, 0x00, 0xF7, 0x1F, 0x7F,
0xE7, 0xFE, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01,
0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x7F, 0x83,
0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x3F, 0xFB,
0xE7, 0xFF, 0x1F, 0xF0, 0x7F, 0x00, 0xF0, 0x1F, 0xF0, 0x3D, 0xE0, 0xFB, 0xC1, 0xE7, 0xC3, 0xC7,
0x8F, 0x0F, 0x1E, 0x1F, 0x3C, 0x1E, 0xF0, 0x3D, 0xE0, 0x3F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xF8,
0x01, 0xF0, 0x00, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0xF1, 0xE7, 0x8F, 0x1E, 0x78, 0xF9, 0xE7,
0x9F, 0x9E, 0x7D, 0xF9, 0xC3, 0xDF, 0xBC, 0x3F, 0xFF, 0xC3, 0xF9, 0xFC, 0x3F, 0x9F, 0x81, 0xF9,
0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x0F, 0x0F, 0x00, 0xF8, 0x7D, 0xF1, 0xE3, 0xCF, 0x8F, 0xFC,
0x1F, 0xE0, 0x3F, 0x80, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x7F, 0x81, 0xFF, 0x0F, 0xFC, 0x7C, 0xF9,
0xE1, 0xFF, 0x87, 0xC0, 0xF8, 0x3F, 0xE1, 0xE7, 0xC7, 0x8F, 0x3C, 0x3F, 0xF0, 0x7F, 0x81, 0xFE,
0x03, 0xF0, 0x0F, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0x7F,
0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x0F,
0x00, 0xF8, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x7E, 0xFD, 0xFB, 0x87, 0x0E, 0x1C, 0x38, 0x70,
0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xFD, 0xFB, 0xF0, 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x03,
0xC0, 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x1C,
0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C,
0x71, 0xC7, 0x1F, 0xFF, 0xFF, 0x0F, 0x01, 0xF0, 0x1F, 0x83, 0xFC, 0x3F, 0xC7, 0x9E, 0x79, 0xEF,
0x0F, 0x70, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x63, 0xCF, 0x8E, 0x18, 0x3F, 0x87, 0xF8, 0xFF,
0x19, 0xF3, 0xFE, 0xFF, 0xDE, 0x7F, 0xCF, 0x7F, 0xEF, 0xFC, 0xFF, 0x00, 0xF0, 0x1E, 0x03, 0xC0,
0x78, 0x0F, 0x01, 0xFF, 0x3F, 0xF7, 0xFF, 0xFB, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x3F, 0xFF, 0xBF,
0xF7, 0xF8, 0x1F, 0xCF, 0xF7, 0xFD, 0xF2, 0x78, 0x1E, 0x07, 0x81, 0xF3, 0x7F, 0xCF, 0xF1, 0xFC,
0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF1, 0xFF, 0x3F, 0xF7, 0xFF, 0x7D, 0xF7, 0x8F, 0x78,
0xF7, 0x8F, 0x7C, 0xF7, 0xFF, 0x3F, 0xF1, 0xFE, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7,
0xFF, 0x78, 0x07, 0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x3F, 0x3F, 0xBF, 0xDF, 0x6F, 0x07, 0xFB,
0xFD, 0xFE, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0x1F, 0xE7, 0xFD, 0xFF, 0xBE,
0xF7, 0x9E, 0xF3, 0xDE, 0x7B, 0xFF, 0x3F, 0xE3, 0xFC, 0x07, 0x99, 0xF7, 0xFE, 0xFF, 0x9F, 0xE0,
0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3F, 0xEF, 0xFF, 0xFF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3,
0xFC, 0xFF, 0x3F, 0xCF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x3C, 0x78, 0xF0,
0x03, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1F, 0xFF, 0xF7, 0xC0, 0xF0, 0x1E,
0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE7, 0xFD, 0xF7, 0xFC, 0xFF, 0x1F, 0xC3, 0xFC, 0x7F, 0x8F, 0x79,
0xEF, 0xBC, 0xFF, 0x8F, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFB, 0xF7, 0x9E,
0xFF, 0xFC, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xDF, 0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF,
0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF, 0xFF, 0xBF, 0xEF, 0xFF, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF,
0xF3, 0xFC, 0xFF, 0x3C, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xDF,
0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0xFF, 0x1F, 0xFB, 0xFF, 0x79, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x9F,
0xFF, 0xDF, 0xFB, 0xFE, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x1F, 0xE3, 0xFF, 0x7F, 0xF7, 0xCF,
0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xDF, 0x7F, 0xF3, 0xFF, 0x1F, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00,
0xF0, 0xFF, 0xFF, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x3F, 0x9F, 0xE7, 0xF9,
0xE6, 0x7F, 0x9F, 0xE3, 0xFD, 0x8F, 0x7F, 0xDF, 0xE7, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF,
0xF0, 0xF0, 0xF0, 0xF0, 0xFA, 0xFF, 0x7F, 0x3F, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
0x3F, 0xEF, 0xFF, 0xDF, 0xF3, 0xFC, 0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F,
0x83, 0xF8, 0x1F, 0x81, 0xF0, 0x0F, 0x00, 0xF1, 0xC7, 0x79, 0xE7, 0x9C, 0xF3, 0xCF, 0x7D, 0xE7,
0xBE, 0xE1, 0xFF, 0xF0, 0xFF, 0xF8, 0x7E, 0xF8, 0x1E, 0x7C, 0x0F, 0x3E, 0x07, 0x8E, 0x00, 0xF1,
0xE7, 0x9E, 0x3F, 0xC3, 0xF8, 0x1F, 0x80, 0xF0, 0x1F, 0x83, 0xFC, 0x7B, 0xC7, 0x9E, 0xF1, 0xF0,
0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x0F,
0x01, 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, 0x7F, 0xDF, 0xF7, 0xFC, 0x1E, 0x0F, 0x07, 0x83, 0xC1,
0xE0, 0x7F, 0xFF, 0xFF, 0xFC, 0x0F, 0x1F, 0x3F, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0xF8, 0xF8,
0xFC, 0x7C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3F, 0x1F, 0x1F, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
0x77, 0x77, 0x77, 0xF0, 0xF8, 0xF8, 0x7C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x1E, 0x3E, 0x3C,
0x3C, 0x3C, 0x3C, 0x7C, 0xF8, 0xF8, 0xF0, 0x3C, 0x77, 0xFF, 0x7F, 0xEF, 0xFE, 0xE3, 0xC0, 0xFF,
0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0x03, 0xC0, 0xF0, 0x7F, 0x3F, 0xDF, 0xF7, 0xC9,
0xE0, 0x78, 0x1F, 0x37, 0xFC, 0xFF, 0x1F, 0xC3, 0xC0, 0xF0, 0x3C, 0x0F, 0xC3, 0xF8, 0xFF, 0x1F,
0x63, 0xC0, 0x78, 0x3F, 0xE7, 0xFC, 0xFF, 0x87, 0x80, 0xF0, 0x1E, 0x03, 0xFE, 0x7F, 0xDF, 0xF8,
0x00, 0x07, 0x0E, 0xFF, 0xF7, 0xFE, 0x3B, 0xC7, 0x9E, 0x79, 0xE3, 0xBC, 0x7F, 0xEF, 0xFF, 0x70,
0xC0, 0x78, 0x79, 0xF3, 0xE3, 0xCF, 0x0F, 0x3C, 0x1F, 0xE0, 0x7F, 0x80, 0xFC, 0x0F, 0xFC, 0x3F,
0xF0, 0x1E, 0x00, 0x78, 0x0F, 0xFC, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xC7, 0xF9, 0xFF, 0x3C, 0xC7, 0x80, 0x7E, 0x0F, 0xE3,
0xFE, 0x73, 0xDE, 0x39, 0xE7, 0x3F, 0xE3, 0xF8, 0x3F, 0x80, 0xF3, 0x9E, 0x7F, 0xDF, 0xF9, 0xFE,
0x00, 0x77, 0xFB, 0xDD, 0xE0, 0x0F, 0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x80, 0xEE, 0x7D, 0xDD, 0xF9,
0xFB, 0x93, 0xFF, 0x07, 0xEE, 0x4F, 0xDF, 0x9F, 0x9F, 0x73, 0x80, 0xE7, 0xCF, 0x87, 0xFE, 0x03,
0xF8, 0x00, 0x7E, 0x7F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0xC7, 0x3C, 0xF7, 0xDE,
0x7B, 0xEF, 0xBC, 0x7B, 0xE7, 0xDE, 0x3C, 0xF1, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x07,
0x01, 0xC0, 0x70, 0x1C, 0x07, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x80, 0xEE,
0xFD, 0xDD, 0xFD, 0xFB, 0xBB, 0xF7, 0xE7, 0xEF, 0xCF, 0xDF, 0x9F, 0xBB, 0xF3, 0x80, 0xE7, 0xCF,
0x87, 0xFE, 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0x7C, 0xFE, 0xEE, 0xEE, 0xFE, 0x7C, 0x1E, 0x07, 0x81,
0xE0, 0x78, 0xFF, 0xFF, 0xFF, 0xFC, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC,
0x7D, 0xFD, 0xB8, 0xF3, 0xCF, 0x1C, 0x7F, 0xFE, 0xFD, 0xFD, 0x79, 0xE3, 0xE1, 0xD3, 0xFF, 0xFC,
0x10, 0xE7, 0xBC, 0x60, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xEF, 0xFF, 0xFF,
0xFF, 0xFF, 0xC0, 0xF0, 0x3C, 0x0F, 0x00, 0x0F, 0xF8, 0xFF, 0xF7, 0xFF, 0xDF, 0xEF, 0x7F, 0xBD,
0xFE, 0xF7, 0xFB, 0xDF, 0xEF, 0x3F, 0xBC, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, 0x07, 0xBC, 0x1E, 0xF0,
0x7B, 0xC1, 0xEF, 0x07, 0xBC, 0x1E, 0xF0, 0x7B, 0xC0, 0x77, 0xFE, 0xE0, 0x18, 0xE3, 0xDF, 0x7D,
0xE0, 0x1D, 0xF7, 0xDF, 0x1C, 0x71, 0xC7, 0x1C, 0x3E, 0x3F, 0x9D, 0xFE, 0x7F, 0x3B, 0xBD, 0xFC,
0x7E, 0x00, 0x03, 0x8E, 0x1E, 0xF0, 0xF3, 0xC3, 0xDF, 0x1F, 0x78, 0xF7, 0xCF, 0x3C, 0x7B, 0xC3,
0x8E, 0x00, 0x00, 0x3C, 0x1C, 0x0F, 0x87, 0x83, 0xF0, 0xF0, 0x3E, 0x3C, 0x01, 0xC7, 0x80, 0x39,
0xE0, 0x07, 0x3C, 0xF0, 0xEF, 0x3E, 0x1D, 0xEF, 0xC0, 0x7B, 0xB8, 0x0E, 0x7F, 0x03, 0xCF, 0xE0,
0x70, 0x1C, 0x1E, 0x03, 0x83, 0x80, 0x00, 0x3C, 0x3C, 0x1F, 0x0F, 0x0F, 0xC7, 0x81, 0xF1, 0xC0,
0x1C, 0xF0, 0x07, 0x38, 0x01, 0xDE, 0xF8, 0x77, 0x7E, 0x1F, 0xCF, 0xC0, 0xE0, 0xF0, 0x78, 0x78,
0x1C, 0x3C, 0x0F, 0x0E, 0x03, 0x87, 0xF1, 0xE1, 0xFC, 0x7C, 0x1E, 0x0F, 0xC3, 0xC1, 0xB8, 0xF0,
0x1E, 0x1E, 0x03, 0xE7, 0x80, 0x1C, 0xE0, 0x13, 0xBC, 0xF7, 0xF7, 0x3E, 0xFD, 0xEF, 0xC0, 0x3B,
0xB8, 0x0F, 0x7F, 0x01, 0xCF, 0xE0, 0x78, 0x1C, 0x0E, 0x03, 0x83, 0xC0, 0x00, 0x0E, 0x07, 0xC1,
0xF0, 0x38, 0x00, 0x03, 0x81, 0xE0, 0xF8, 0x7C, 0x1E, 0x0F, 0x03, 0xEE, 0xFF, 0x9F, 0xE3, 0xF8,
0x03, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x07,
0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x81, 0xEF, 0x03, 0x8F, 0x0F, 0x1E, 0x1F, 0xFC, 0x7F, 0xFC,
0xFF, 0xF9, 0xE0, 0xF7, 0x80, 0xFF, 0x01, 0xE0, 0x01, 0x80, 0x03, 0x80, 0x0F, 0x00, 0x3C, 0x00,
0x70, 0x00, 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x81, 0xEF,
0x03, 0x8F, 0x0F, 0x1E, 0x1F, 0xFC, 0x7F, 0xFC, 0xFF, 0xF9, 0xE0, 0xF7, 0x80, 0xFF, 0x01, 0xE0,
0x01, 0x80, 0x07, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x44, 0x00, 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x07,
0xE0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x81, 0xEF, 0x03, 0x8F, 0x0F, 0x1E, 0x1F, 0xFC, 0x7F, 0xFC,
0xFF, 0xF9, 0xE0, 0xF7, 0x80, 0xFF, 0x01, 0xE0, 0x0F, 0x60, 0x1F, 0xE0, 0x37, 0x80, 0x00, 0x00,
0x7C, 0x00, 0xF8, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x3D, 0xE0, 0x7B, 0xC0, 0xE3, 0xC3, 0xC7,
0x87, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x78, 0x3D, 0xE0, 0x3F, 0xC0, 0x78, 0x1E, 0xE0, 0x3D, 0xE0,
0x7B, 0x80, 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x3D, 0xE0, 0x7B,
0xC0, 0xE3, 0xC3, 0xC7, 0x87, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x78, 0x3D, 0xE0, 0x3F, 0xC0, 0x78,
0x07, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF8, 0x07, 0xF0, 0x0F,
0xF0, 0x3D, 0xE0, 0x7B, 0xC1, 0xE3, 0xC3, 0xC7, 0x87, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x78, 0x3D,
0xE0, 0x3F, 0xC0, 0x78, 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xF8, 0x00, 0x3F,
0xC0, 0x03, 0xDE, 0x00, 0x1E, 0xFF, 0x81, 0xE7, 0xFC, 0x0F, 0x3F, 0xE0, 0xFF, 0xE0, 0x0F, 0xFF,
0x00, 0x7F, 0xF8, 0x07, 0xC3, 0xFF, 0xBC, 0x1F, 0xFF, 0xC0, 0xFF, 0xE0, 0x0F, 0xF1, 0xFF, 0x9F,
0xFC, 0xFD, 0xEF, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3E, 0x00, 0xF8, 0xE7,
0xFF, 0x1F, 0xF8, 0x3F, 0xC0, 0xE0, 0x07, 0x80, 0x1C, 0x03, 0xE0, 0x1F, 0x00, 0x0C, 0x03, 0x80,
0x78, 0x07, 0x80, 0x70, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0xFD, 0xFF,
0xBF, 0xF7, 0x80, 0xF0, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x02, 0x00, 0xE0, 0x3C, 0x0F, 0x01,
0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0xFD, 0xFF, 0xBF, 0xF7, 0x80,
0xF0, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x06, 0x01, 0xE0, 0x7E, 0x1F, 0xC1, 0x98, 0x00, 0x3F,
0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0xFD, 0xFF, 0xBF, 0xF7, 0x80, 0xF0, 0x1E, 0x03,
0xFF, 0xFF, 0xFF, 0xFE, 0x3B, 0xCF, 0x78, 0xEF, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xF0,
0x1E, 0x03, 0xFF, 0x7F, 0xEF, 0xFD, 0xE0, 0x3C, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x21,
0xC7, 0x8F, 0x1C, 0x07, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x78, 0x33,
0xDF, 0xEE, 0x03, 0xDE, 0xF7, 0xBD, 0xEF, 0x7B, 0xDE, 0xF7, 0xBD, 0xEF, 0x00, 0x30, 0xF3, 0xF7,
0xFC, 0xC0, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x80,
0xF7, 0x7B, 0xFD, 0xC0, 0x03, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0,
0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x00, 0x3F, 0xE0, 0x7F, 0xF0, 0xFF, 0xF1, 0xE7, 0xE3, 0xC3, 0xE7,
0x83, 0xFF, 0xC7, 0xFF, 0x8F, 0x3C, 0x1E, 0x78, 0x3C, 0xF0, 0xF9, 0xE7, 0xE3, 0xFF, 0x87, 0xFE,
0x0F, 0xF8, 0x00, 0x0F, 0x60, 0x7F, 0x81, 0xBC, 0x00, 0x00, 0xF0, 0x3F, 0xE0, 0xFF, 0xC3, 0xFF,
0x8F, 0xFE, 0x3F, 0xFC, 0xFF, 0x7B, 0xFD, 0xEF, 0xF3, 0xFF, 0xC7, 0xFF, 0x1F, 0xFC, 0x3F, 0xF0,
0x7F, 0xC1, 0xFF, 0x03, 0xC0, 0x02, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x00,
0x03, 0xF8, 0x1F, 0xF8, 0x7F, 0xF8, 0xF9, 0xFB, 0xE0, 0xF7, 0x81, 0xFF, 0x01, 0xFE, 0x03, 0xFC,
0x07, 0xF8, 0x1F, 0xF8, 0x3C, 0xF9, 0xF9, 0xFF, 0xE1, 0xFF, 0xC0, 0xFE, 0x00, 0x01, 0x80, 0x07,
0x80, 0x0F, 0x00, 0x3C, 0x00, 0x60, 0x00, 0x00, 0x03, 0xF8, 0x1F, 0xF8, 0x7F, 0xF8, 0xF9, 0xFB,
0xE0, 0xF7, 0x81, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xF8, 0x3C, 0xF9, 0xF9, 0xFF,
0xE1, 0xFF, 0xC0, 0xFE, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0x7F, 0x00, 0xCC, 0x00, 0x00,
0x03, 0xF8, 0x1F, 0xF8, 0x7F, 0xF8, 0xF9, 0xFB, 0xE0, 0xF7, 0x81, 0xFF, 0x01, 0xFE, 0x03, 0xFC,
0x07, 0xF8, 0x1F, 0xF8, 0x3C, 0xF9, 0xF9, 0xFF, 0xE1, 0xFF, 0xC0, 0xFE, 0x00, 0x0F, 0x60, 0x3F,
0xC0, 0x37, 0x80, 0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x3E, 0x7E, 0xF8, 0x3D, 0xE0, 0x7F,
0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x07, 0xFE, 0x0F, 0x3E, 0x7E, 0x7F, 0xF8, 0x7F, 0xF0, 0x3F,
0x80, 0x1C, 0xE0, 0x3D, 0xC0, 0x73, 0x80, 0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x3E, 0x7E,
0xF8, 0x3D, 0xE0, 0x7F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x07, 0xFE, 0x0F, 0x3E, 0x7E, 0x7F,
0xF8, 0x7F, 0xF0, 0x3F, 0x80, 0x61, 0xBC, 0xFF, 0xF8, 0xFC, 0x3E, 0x0F, 0xC7, 0xFB, 0xCF, 0x61,
0x80, 0x00, 0x08, 0x1F, 0xF8, 0xFF, 0xF3, 0xFF, 0xC7, 0xCF, 0xDF, 0x1F, 0xBC, 0x7F, 0xF9, 0xEF,
0xF7, 0x9F, 0xEE, 0x3F, 0xFC, 0xFF, 0xF1, 0xE7, 0xCF, 0xCF, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, 0x20,
0x00, 0x0C, 0x00, 0xF0, 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x00, 0x03, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, 0xEF, 0x9F, 0xFC,
0x7F, 0xC1, 0xFC, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xE0, 0x1E, 0x00, 0xE0, 0x00, 0x03, 0xC1, 0xFE,
0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF,
0xEF, 0x9F, 0xFC, 0x7F, 0xC1, 0xFC, 0x00, 0x06, 0x00, 0x78, 0x07, 0xE0, 0x3F, 0x80, 0x98, 0x00,
0x03, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE,
0x0F, 0xF0, 0xFF, 0xEF, 0x9F, 0xFC, 0x7F, 0xC1, 0xFC, 0x00, 0x3D, 0xC1, 0xEF, 0x0F, 0x70, 0x00,
0x0F, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8,
0x3F, 0xC3, 0xFF, 0xBE, 0x7F, 0xF1, 0xFF, 0x07, 0xF0, 0x01, 0x80, 0x0F, 0x00, 0x3C, 0x01, 0xE0,
0x07, 0x00, 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, 0xF0, 0x0F,
0x00, 0xFF, 0xCF, 0xFE, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, 0x0F, 0xF3, 0xFF, 0xFF, 0xFF, 0xEF, 0xF8,
0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x3F, 0x83, 0xFE, 0x1F, 0xF1, 0xF7, 0x8F, 0x1C, 0x79, 0xE3, 0xDE,
0x1E, 0xF0, 0xF7, 0x87, 0xBF, 0x3C, 0xFD, 0xE1, 0xEF, 0x6F, 0x7B, 0xFB, 0xFF, 0xDF, 0xFC, 0x0C,
0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x00, 0x0F, 0xE1, 0xFE, 0x3F, 0xC6, 0x7C, 0xFF, 0xBF, 0xF7,
0x9F, 0xF3, 0xDF, 0xFB, 0xFF, 0x3F, 0xC0, 0x02, 0x00, 0xE0, 0x3C, 0x0F, 0x00, 0xC0, 0x00, 0x0F,
0xE1, 0xFE, 0x3F, 0xC6, 0x7C, 0xFF, 0xBF, 0xF7, 0x9F, 0xF3, 0xDF, 0xFB, 0xFF, 0x3F, 0xC0, 0x0C,
0x01, 0xC0, 0x7C, 0x1F, 0xC1, 0x10, 0x00, 0x0F, 0xE1, 0xFE, 0x3F, 0xC6, 0x7C, 0xFF, 0xBF, 0xF7,
0x9F, 0xF3, 0xDF, 0xFB, 0xFF, 0x3F, 0xC0, 0x3D, 0x87, 0xF8, 0xDE, 0x00, 0x00, 0x00, 0x7F, 0x0F,
0xF1, 0xFE, 0x33, 0xE7, 0xFD, 0xFF, 0xBC, 0xFF, 0x9E, 0xFF, 0xDF, 0xF9, 0xFE, 0x3B, 0xCF, 0x78,
0xEF, 0x00, 0x00, 0x00, 0x7F, 0x0F, 0xF1, 0xFE, 0x33, 0xE7, 0xFD, 0xFF, 0xBC, 0xFF, 0x9E, 0xFF,
0xDF, 0xF9, 0xFE, 0x0F, 0x03, 0xE0, 0x6E, 0x0F, 0xC1, 0xF0, 0x1E, 0x00, 0x01, 0xFC, 0x3F, 0xC7,
0xF8, 0xCF, 0x9F, 0xF7, 0xFE, 0xF3, 0xFE, 0x7B, 0xFF, 0x7F, 0xE7, 0xF8, 0x3F, 0xFF, 0x0F, 0xFF,
0xE3, 0xFF, 0xF8, 0xCF, 0x9F, 0x3F, 0xFF, 0xDF, 0xFF, 0xF7, 0x9E, 0x03, 0xE7, 0xC6, 0x7F, 0xFF,
0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x1F, 0xCF, 0xF7, 0xFD, 0xF2, 0x78, 0x1E, 0x07, 0x81, 0xF3, 0x7F,
0xCF, 0xF0, 0xFC, 0x3C, 0x07, 0x07, 0xC1, 0xF0, 0x0C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x00,
0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07, 0xC6, 0x7F, 0xE3, 0xFE,
0x1F, 0xE0, 0x03, 0x00, 0x78, 0x07, 0x80, 0xF0, 0x0C, 0x00, 0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7,
0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07, 0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x06, 0x00, 0xF0, 0x1F,
0x81, 0xFC, 0x19, 0x80, 0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07,
0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x3D, 0xC3, 0xDE, 0x3D, 0xC0, 0x00, 0x00, 0x01, 0xF8, 0x3F,
0xE7, 0xFE, 0x79, 0xF7, 0xFF, 0x7F, 0xF7, 0x80, 0x7C, 0x67, 0xFE, 0x3F, 0xE1, 0xFE, 0x63, 0xC7,
0x8E, 0x18, 0x07, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x78, 0x18, 0xF3, 0xDE, 0x60, 0x07,
0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x78, 0x18, 0x3C, 0x7E, 0x7F, 0x66, 0x00, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x73, 0xBF, 0xDC, 0xE0, 0x00, 0x00, 0xF0,
0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x07, 0x00, 0x3F, 0x81, 0xFC,
0x1F, 0xC0, 0x7E, 0x00, 0x78, 0x7F, 0xC7, 0xFE, 0x7F, 0xF3, 0xEF, 0x9E, 0x3C, 0xF1, 0xE7, 0x9F,
0x3F, 0xF0, 0xFF, 0x03, 0xF0, 0x3D, 0x9F, 0xE7, 0xF8, 0x00, 0x00, 0x3F, 0xEF, 0xFB, 0xFF, 0xF3,
0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0x04, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03,
0x80, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xDF, 0x7F, 0xE3,
0xFE, 0x1F, 0xC0, 0x03, 0x00, 0x38, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x00, 0x1F, 0xC3, 0xFE, 0x7F,
0xE7, 0xDF, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xDF, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x06, 0x00, 0xF0,
0x1F, 0x81, 0xFC, 0x19, 0x80, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x78, 0xF7, 0x8F, 0x78,
0xF7, 0xDF, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x1E, 0xC3, 0xFC, 0x1B, 0xC0, 0x00, 0x00, 0x01, 0xFC,
0x3F, 0xE7, 0xFE, 0x7D, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x7D, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x3D,
0xC3, 0xDE, 0x3D, 0xC0, 0x00, 0x00, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x7D, 0xF7, 0x8F, 0x78, 0xF7,
0x8F, 0x7D, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x00, 0x3F, 0xFF, 0xFF,
0xFF, 0x00, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x00, 0x00, 0x21, 0xFF, 0x3F, 0xE7, 0xFE, 0x7F, 0xF7,
0xBF, 0x77, 0xF7, 0xEF, 0x7D, 0xF7, 0xFE, 0x7F, 0xE7, 0xFC, 0x20, 0x00, 0x18, 0x0F, 0x03, 0xC0,
0x78, 0x0E, 0x00, 0x0F, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFE, 0xFF, 0xFD, 0xFF,
0x3F, 0xC0, 0x06, 0x03, 0xC0, 0xF0, 0x78, 0x18, 0x00, 0x0F, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F,
0xCF, 0xF3, 0xFE, 0xFF, 0xFD, 0xFF, 0x3F, 0xC0, 0x0C, 0x07, 0x83, 0xF0, 0xFE, 0x33, 0x00, 0x0F,
0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFE, 0xFF, 0xFD, 0xFF, 0x3F, 0xC0, 0x73, 0x9E,
0xE7, 0x38, 0x00, 0x00, 0x3C, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xFB, 0xFF, 0xF7,
0xFC, 0xFF, 0x03, 0x00, 0x38, 0x07, 0x80, 0xF0, 0x0E, 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, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xFE, 0x3F, 0xF7, 0xFE, 0xF3, 0xFE, 0x3F,
0xC7, 0xF8, 0xFF, 0x3F, 0xFF, 0xBF, 0xF7, 0xFC, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x00, 0x39, 0xC3,
0xBC, 0x39, 0xC0, 0x00, 0x00, 0x0F, 0x0F, 0xF1, 0xE7, 0x9E, 0x79, 0xE7, 0xBC, 0x3F, 0xC3, 0xF8,
0x1F, 0x81, 0xF8, 0x1F, 0x00, 0xF0, 0x1E, 0x0F, 0xE0, 0xFC, 0x0F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0,
0x00, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x1E, 0xF0, 0x3D, 0xE0, 0x71,
0xE1, 0xE3, 0xC3, 0xFF, 0x8F, 0xFF, 0x9F, 0xFF, 0x3C, 0x1E, 0xF0, 0x1F, 0xE0, 0x3C, 0x3F, 0x87,
0xF0, 0x00, 0x00, 0x03, 0xF8, 0x7F, 0x8F, 0xF1, 0x9F, 0x3F, 0xEF, 0xFD, 0xE7, 0xFC, 0xF7, 0xFE,
0xFF, 0xCF, 0xF0, 0x0E, 0xF0, 0x1F, 0xC0, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF8,
0x07, 0xF0, 0x0F, 0xE0, 0x3D, 0xE0, 0x7B, 0xC0, 0xE3, 0xC3, 0xC7, 0x87, 0xFF, 0x1F, 0xFF, 0x3F,
0xFE, 0x78, 0x3D, 0xE0, 0x3F, 0xC0, 0x78, 0x3B, 0xC7, 0xF0, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x0F,
0xF1, 0xFE, 0x33, 0xE7, 0xFD, 0xFF, 0xBC, 0xFF, 0x9E, 0xFF, 0xDF, 0xF9, 0xFE, 0x07, 0xC0, 0x07,
0xC0, 0x07, 0xE0, 0x0F, 0xE0, 0x0F, 0xE0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1C, 0x78, 0x3C, 0x78, 0x3F,
0xF8, 0x7F, 0xFC, 0x7F, 0xFC, 0x78, 0x3C, 0xF0, 0x1E, 0xF0, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00,
0x3C, 0x00, 0x3F, 0x00, 0x1F, 0x3F, 0x87, 0xF8, 0xFF, 0x19, 0xF3, 0xFE, 0xFF, 0xDE, 0x7F, 0xCF,
0x7F, 0xEF, 0xFC, 0xFF, 0x81, 0xE0, 0x78, 0x0F, 0xC0, 0xF8, 0x01, 0x80, 0x1E, 0x00, 0xF0, 0x0F,
0x00, 0x70, 0x00, 0x00, 0x3F, 0xC7, 0xFE, 0x7F, 0xF3, 0xF7, 0xBE, 0x01, 0xE0, 0x0F, 0x00, 0x78,
0x03, 0xC0, 0x1E, 0x00, 0xF8, 0x07, 0xE3, 0x9F, 0xFC, 0x7F, 0xE1, 0xFF, 0x00, 0x03, 0x00, 0xE0,
0x78, 0x3C, 0x0E, 0x00, 0x01, 0xFC, 0xFF, 0x7F, 0xDF, 0x27, 0x81, 0xE0, 0x78, 0x1F, 0x37, 0xFC,
0xFF, 0x1F, 0xC0, 0x03, 0x00, 0x3C, 0x03, 0xF0, 0x1F, 0xC0, 0xCC, 0x00, 0x00, 0x3F, 0xC7, 0xFE,
0x7F, 0xF3, 0xF7, 0xBE, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF8, 0x07, 0xE3,
0x9F, 0xFC, 0x7F, 0xE1, 0xFF, 0x00, 0x06, 0x03, 0xC1, 0xF8, 0x7F, 0x19, 0x80, 0x01, 0xFC, 0xFF,
0x7F, 0xDF, 0x27, 0x81, 0xE0, 0x78, 0x1F, 0x37, 0xFC, 0xFF, 0x1F, 0xC0, 0x03, 0x80, 0x3C, 0x00,
0xE0, 0x00, 0x00, 0xFF, 0x1F, 0xF9, 0xFF, 0xCF, 0xDE, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F,
0x00, 0x78, 0x03, 0xE0, 0x1F, 0x8E, 0x7F, 0xF1, 0xFF, 0x87, 0xFC, 0x07, 0x03, 0xC0, 0x70, 0x00,
0x00, 0x07, 0xF3, 0xFD, 0xFF, 0x7C, 0x9E, 0x07, 0x81, 0xE0, 0x7C, 0xDF, 0xF3, 0xFC, 0x7F, 0x0C,
0xC0, 0x7F, 0x03, 0xF0, 0x0F, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xC7, 0xFE, 0x7F, 0xF3, 0xF7, 0xBE,
0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF8, 0x07, 0xE3, 0x9F, 0xFC, 0x7F, 0xE1,
0xFF, 0x00, 0x19, 0x87, 0xF1, 0xF8, 0x3C, 0x06, 0x00, 0x01, 0xFC, 0xFF, 0x7F, 0xDF, 0x27, 0x81,
0xE0, 0x78, 0x1F, 0x37, 0xFC, 0xFF, 0x1F, 0xC0, 0x09, 0x80, 0x7F, 0x00, 0xF8, 0x03, 0xC0, 0x06,
0x00, 0x00, 0x0F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF3, 0xC7, 0xEF, 0x07, 0xBC, 0x1F, 0xF0, 0x3F, 0xC0,
0xFF, 0x03, 0xFC, 0x1F, 0xF0, 0x7B, 0xC7, 0xEF, 0xFF, 0x3F, 0xF8, 0xFF, 0xC0, 0x00, 0xFF, 0x00,
0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xF0, 0x7D, 0xF0, 0x78,
0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x7C, 0xF0, 0x7F, 0xF0, 0x3F, 0xF0, 0x1F, 0xE0, 0x3F, 0xE0, 0x7F,
0xF0, 0xFF, 0xF1, 0xE7, 0xE3, 0xC3, 0xE7, 0x83, 0xFF, 0xC7, 0xFF, 0x8F, 0x3C, 0x1E, 0x78, 0x3C,
0xF0, 0xF9, 0xE7, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0xC1, 0xFE, 0x01,
0xE0, 0x0F, 0x0F, 0xF8, 0xFF, 0xCF, 0xFE, 0x7D, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0xCF, 0x3F,
0xF8, 0xFF, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0x07, 0x80, 0xF0,
0x1F, 0xFB, 0xFF, 0x7F, 0xEF, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC,
0x00, 0x00, 0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07, 0xC6, 0x7F,
0xE3, 0xFE, 0x1F, 0xE0, 0x3B, 0x87, 0xF0, 0x7C, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xF0,
0x1E, 0x03, 0xFF, 0x7F, 0xEF, 0xFD, 0xE0, 0x3C, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x3D,
0xC1, 0xFC, 0x0F, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x3F, 0xE7, 0xFE, 0x79, 0xF7, 0xFF, 0x7F, 0xF7,
0x80, 0x7C, 0x67, 0xFE, 0x3F, 0xE1, 0xFE, 0x0E, 0x01, 0xE0, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF,
0xFF, 0x80, 0xF0, 0x1E, 0x03, 0xFF, 0x7F, 0xEF, 0xFD, 0xE0, 0x3C, 0x07, 0x80, 0xFF, 0xFF, 0xFF,
0xFF, 0x80, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x3F, 0xE7, 0xFE, 0x79, 0xF7,
0xFF, 0x7F, 0xF7, 0x80, 0x7C, 0x67, 0xFE, 0x3F, 0xE1, 0xFE, 0xFF, 0xEF, 0xFE, 0xFF, 0xEF, 0x00,
0xF0, 0x0F, 0x00, 0xFF, 0xCF, 0xFC, 0xFF, 0xCF, 0x00, 0xF0, 0x0F, 0x00, 0xFF, 0xEF, 0xFE, 0xFF,
0xE0, 0x1E, 0x01, 0xC0, 0x3C, 0x03, 0xF0, 0x1F, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7,
0xFF, 0x78, 0x07, 0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x3C, 0x03, 0x80, 0x3E, 0x03, 0xE0, 0x19,
0x87, 0xF0, 0x7E, 0x07, 0x80, 0x60, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F,
0xFD, 0xFF, 0xBF, 0xF7, 0x80, 0xF0, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x19, 0x81, 0xFC, 0x1F,
0x80, 0xF0, 0x06, 0x00, 0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07,
0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x03, 0x00, 0x3C, 0x03, 0xF0, 0x1F, 0xC0, 0xCC, 0x00, 0x00,
0x3F, 0xC7, 0xFE, 0x7F, 0xF3, 0xF3, 0xBE, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x3F, 0xC1, 0xFE, 0x0F,
0xF8, 0x7B, 0xE3, 0xDF, 0xFE, 0x7F, 0xF1, 0xFF, 0x00, 0x03, 0x00, 0xF0, 0x3F, 0x0F, 0xE0, 0xCC,
0x00, 0x07, 0xF9, 0xFF, 0x7F, 0xEF, 0xBD, 0xE7, 0xBC, 0xF7, 0x9E, 0xFF, 0xCF, 0xF8, 0xFF, 0x01,
0xE6, 0x7D, 0xFF, 0xBF, 0xE7, 0xF8, 0x1E, 0xE0, 0x7F, 0x01, 0xF0, 0x00, 0x00, 0xFF, 0x1F, 0xF9,
0xFF, 0xCF, 0xCE, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE1, 0xEF, 0x8F,
0x7F, 0xF9, 0xFF, 0xC7, 0xFC, 0x1D, 0xC3, 0xF8, 0x3E, 0x00, 0x00, 0x00, 0x3F, 0xCF, 0xFB, 0xFF,
0x7D, 0xEF, 0x3D, 0xE7, 0xBC, 0xF7, 0xFE, 0x7F, 0xC7, 0xF8, 0x0F, 0x33, 0xEF, 0xFD, 0xFF, 0x3F,
0xC0, 0x03, 0x80, 0x3C, 0x00, 0xE0, 0x00, 0x00, 0xFF, 0x1F, 0xF9, 0xFF, 0xCF, 0xCE, 0xF8, 0x07,
0x80, 0x3C, 0x01, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE1, 0xEF, 0x8F, 0x7F, 0xF9, 0xFF, 0xC7, 0xFC,
0x07, 0x01, 0xE0, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0xCF, 0xFB, 0xFF, 0x7D, 0xEF, 0x3D, 0xE7, 0xBC,
0xF7, 0xFE, 0x7F, 0xC7, 0xF8, 0x0F, 0x33, 0xEF, 0xFD, 0xFF, 0x3F, 0xC0, 0x0F, 0xF1, 0xFF, 0x9F,
0xFC, 0xFC, 0xEF, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x0F, 0xF0, 0x7F, 0x83, 0xFE, 0x1E, 0xF8, 0xF7,
0xFF, 0x9F, 0xFC, 0x7F, 0xC0, 0x00, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x1E, 0x00, 0x03, 0x80, 0xF0,
0x1C, 0x03, 0x80, 0x00, 0x00, 0x07, 0xF9, 0xFF, 0x7F, 0xEF, 0xBD, 0xE7, 0xBC, 0xF7, 0x9E, 0xFF,
0xCF, 0xF8, 0xFF, 0x01, 0xE6, 0x7D, 0xFF, 0xBF, 0xE7, 0xF8, 0x03, 0x00, 0x3C, 0x03, 0xF0, 0x3F,
0x80, 0xCC, 0x00, 0x03, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0x80, 0x38, 0x3F, 0x8E,
0xE0, 0x00, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3F, 0xEF, 0xFF, 0xFF, 0xF3, 0xFC, 0xFF, 0x3F,
0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0x3C, 0x3C, 0x3C, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x3C,
0x3C, 0x3C, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x07, 0x80, 0xFF, 0x0F, 0xF0, 0x78, 0x07, 0xFC, 0x7F, 0xE7, 0xFE,
0x79, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x7B, 0x7F, 0x9B, 0xC0,
0x03, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E,
0x0F, 0x00, 0x7B, 0xFF, 0xFE, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,
0x3C, 0x3C, 0x7F, 0x7F, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0xEF, 0xFD, 0xF0, 0x07, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E,
0x3C, 0x78, 0xF1, 0xE0, 0xF7, 0x7E, 0x7E, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C,
0x3C, 0x3C, 0x3C, 0x3C, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E,
0x73, 0xCF, 0xDF, 0x79, 0xE7, 0x9E, 0x01, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x7B,
0xCF, 0x3E, 0x78, 0x7F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0,
0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x1E, 0xF3, 0xBE, 0xF3, 0xFE, 0xF3, 0xFC, 0xF3,
0xF8, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0x00, 0x3C, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF,
0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0x03, 0xC7, 0xF1, 0xF8, 0x7C, 0x01, 0x80, 0x3C, 0x07, 0xE0, 0xFE,
0x06, 0x60, 0x00, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03,
0xC0, 0x3C, 0x03, 0xC6, 0x7C, 0xFF, 0xCF, 0xF8, 0x7F, 0x00, 0x0C, 0x0F, 0x0F, 0xC7, 0xE3, 0x30,
0x00, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x3F, 0x9F,
0x8F, 0x80, 0xF0, 0xFB, 0xC7, 0xCF, 0x3E, 0x3D, 0xF0, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0,
0xFF, 0x83, 0xDF, 0x0F, 0x3C, 0x3C, 0xF8, 0xF1, 0xF3, 0xC3, 0xCF, 0x0F, 0x80, 0x00, 0x07, 0x00,
0x1C, 0x00, 0xF0, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE7, 0xFD, 0xF7, 0xFC,
0xFF, 0x1F, 0xC3, 0xFC, 0x7F, 0x8F, 0x79, 0xEF, 0xBC, 0xFF, 0x8F, 0x00, 0x01, 0xC0, 0x78, 0x1F,
0x03, 0xC0, 0xF3, 0xEF, 0x7C, 0xFF, 0x8F, 0xF0, 0xFE, 0x0F, 0xF0, 0xFF, 0x0F, 0x78, 0xF7, 0xCF,
0x3C, 0xF1, 0xE0, 0x18, 0x07, 0x01, 0xE0, 0x78, 0x06, 0x00, 0x00, 0x3C, 0x07, 0x80, 0xF0, 0x1E,
0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFE,
0x19, 0xEF, 0xB8, 0x03, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xEF, 0xDE, 0x78,
0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78,
0x0F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x00, 0xF3, 0xCF, 0x3C, 0xF3,
0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFB, 0xF7, 0x9E, 0x01, 0xC7, 0x3C, 0xE0, 0xF0, 0x1E, 0x73, 0xCE,
0x79, 0xCF, 0x39, 0xE6, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xFF, 0xFF,
0xF8, 0xF7, 0xF7, 0xF7, 0xF6, 0xF6, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF8, 0xFC, 0x78,
0x78, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x3D, 0xE7, 0xBC, 0xF7, 0x9E, 0xF0, 0x1E, 0x03, 0xC0,
0x78, 0x0F, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0xEF, 0x7F, 0xDF,
0xF3, 0xBC, 0x0F, 0x03, 0xC0, 0xF8, 0x3F, 0x07, 0x81, 0xE0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78,
0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xFF, 0x1F,
0xF8, 0xFF, 0xC0, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xF0, 0xFC, 0xFE, 0xFC, 0x7E, 0x0F, 0x07, 0x83,
0xC1, 0xE0, 0xF8, 0x7C, 0x1E, 0x01, 0x80, 0x0F, 0x00, 0x7C, 0x01, 0xC0, 0x06, 0x00, 0x00, 0x0F,
0x03, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, 0xFF, 0xE3, 0xFF, 0xCF, 0xF7, 0xBF, 0xDE, 0xFF, 0x3F, 0xFC,
0x7F, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFC, 0x1F, 0xF0, 0x3C, 0x06, 0x03, 0xC1, 0xF0, 0x70, 0x18,
0x00, 0x0F, 0xFB, 0xFE, 0xFF, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xC0,
0xF0, 0x3F, 0xE0, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x3F, 0xFC, 0xFF, 0x7B, 0xFD, 0xEF, 0xF3, 0xFF,
0xC7, 0xFF, 0x1F, 0xFC, 0x3F, 0xF0, 0x7F, 0xC1, 0xFF, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x1E, 0x00,
0xF8, 0x03, 0xC0, 0xFF, 0xBF, 0xEF, 0xFF, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
0x3C, 0x00, 0x0E, 0x07, 0x83, 0xE0, 0xF0, 0x0C, 0xC0, 0x7F, 0x00, 0xFC, 0x01, 0xE0, 0x03, 0x00,
0x00, 0x0F, 0x03, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, 0xFF, 0xE3, 0xFF, 0xCF, 0xF7, 0xBF, 0xDE, 0xFF,
0x3F, 0xFC, 0x7F, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFC, 0x1F, 0xF0, 0x3C, 0x33, 0x0F, 0xE3, 0xF0,
0x78, 0x0C, 0x00, 0x0F, 0xFB, 0xFE, 0xFF, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF,
0xF3, 0xC0, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x0F, 0xF0, 0x7F, 0xC3, 0xFF, 0x1E,
0xF8, 0xF3, 0xC7, 0x9E, 0x3C, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, 0xE3, 0xCF, 0xF0, 0x3F, 0xE0, 0xFF,
0xC3, 0xFF, 0x8F, 0xFE, 0x3F, 0xFC, 0xFF, 0x7B, 0xFD, 0xEF, 0xF3, 0xFF, 0xC7, 0xFF, 0x1F, 0xFC,
0x3F, 0xF0, 0x7F, 0xC1, 0xFF, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x00, 0xFF, 0xBF,
0xEF, 0xFF, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3C, 0x0F, 0x03, 0xC3, 0xF0,
0xF8, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x7F, 0x03, 0xFF, 0x0F, 0xFF, 0x1F, 0x3F, 0x7C, 0x1E,
0xF0, 0x3F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFF, 0x07, 0x9F, 0x3F, 0x3F, 0xFC, 0x3F,
0xF8, 0x1F, 0xC0, 0x1F, 0xC1, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x78,
0xF7, 0x8F, 0x78, 0xF7, 0xDF, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x0E, 0xE0, 0x1F, 0xC0, 0x1F, 0x00,
0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x3E, 0x7E, 0xF8, 0x3D, 0xE0, 0x7F, 0xC0, 0x7F, 0x80,
0xFF, 0x01, 0xFE, 0x07, 0xFE, 0x0F, 0x3E, 0x7E, 0x7F, 0xF8, 0x7F, 0xF0, 0x3F, 0x80, 0x1D, 0xC1,
0xFC, 0x0F, 0x80, 0x00, 0x00, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x7D, 0xF7, 0x8F, 0x78, 0xF7, 0x8F,
0x7D, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x03, 0x30, 0x0E, 0xF0, 0x3D, 0xC0, 0x77, 0x00, 0xCC, 0x00,
0x00, 0x03, 0xF8, 0x1F, 0xF8, 0x7F, 0xF8, 0xF9, 0xFB, 0xE0, 0xF7, 0x81, 0xFF, 0x01, 0xFE, 0x03,
0xFC, 0x07, 0xF8, 0x1F, 0xF8, 0x3C, 0xF9, 0xF9, 0xFF, 0xE1, 0xFF, 0xC0, 0xFE, 0x00, 0x06, 0x60,
0xEE, 0x1C, 0xE1, 0xDC, 0x19, 0x80, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x78, 0xF7, 0x8F,
0x78, 0xF7, 0xDF, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0, 0x0F, 0xFF, 0xE3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE7,
0xE7, 0x80, 0xF8, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x7F, 0xCF, 0x07, 0xFC, 0xF0, 0x7F, 0xCF, 0x07,
0x80, 0xF8, 0x78, 0x07, 0xE7, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0x9F,
0x87, 0xFF, 0xF9, 0xFF, 0xFF, 0xBE, 0xFC, 0xF7, 0x8F, 0xFE, 0xF1, 0xFF, 0xDE, 0x3C, 0x03, 0xEF,
0xE6, 0x7F, 0xFF, 0xC7, 0xFF, 0xF8, 0x7E, 0x7F, 0x00, 0x02, 0x00, 0x38, 0x03, 0xC0, 0x3C, 0x00,
0xC0, 0x00, 0x03, 0xFE, 0x1F, 0xFC, 0xFF, 0xE7, 0x9F, 0xBC, 0x3D, 0xE1, 0xEF, 0x3F, 0x7F, 0xFB,
0xFF, 0x9F, 0xF8, 0xF3, 0xC7, 0x9F, 0x3C, 0x7D, 0xE1, 0xEF, 0x0F, 0x80, 0x0C, 0x1E, 0x3E, 0x38,
0x30, 0x00, 0xFF, 0xFF, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0x87, 0xFF,
0x3F, 0xF9, 0xE7, 0xEF, 0x0F, 0x78, 0x7B, 0xCF, 0xDF, 0xFE, 0xFF, 0xE7, 0xFE, 0x3C, 0xF1, 0xE7,
0xCF, 0x1F, 0x78, 0x7B, 0xC3, 0xE0, 0x00, 0x07, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x7F, 0xBF,
0xDF, 0xEF, 0x27, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x00, 0x07, 0x83, 0xC3, 0xC1, 0xE0,
0x19, 0x81, 0xFC, 0x07, 0xE0, 0x1E, 0x00, 0x60, 0x7F, 0xC3, 0xFF, 0x9F, 0xFC, 0xF3, 0xF7, 0x87,
0xBC, 0x3D, 0xE7, 0xEF, 0xFF, 0x7F, 0xF3, 0xFF, 0x1E, 0x78, 0xF3, 0xE7, 0x8F, 0xBC, 0x3D, 0xE1,
0xF0, 0x66, 0x7F, 0x7E, 0x3C, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
0xF0, 0xF0, 0x03, 0x00, 0x38, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7,
0xCC, 0x78, 0x07, 0xC0, 0x7F, 0x83, 0xFC, 0x0F, 0xE0, 0x1F, 0x00, 0xF7, 0x1F, 0x7F, 0xE7, 0xFE,
0x7F, 0xC0, 0x06, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x00, 0x03, 0xF9, 0xFE, 0x7F, 0x9E, 0x67, 0xF9,
0xFE, 0x3F, 0xD8, 0xF7, 0xFD, 0xFE, 0x7F, 0x00, 0x06, 0x00, 0xF0, 0x1F, 0x81, 0xFC, 0x19, 0x80,
0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xCC, 0x78, 0x07, 0xC0, 0x7F, 0x83, 0xFC, 0x0F, 0xE0, 0x1F,
0x00, 0xF7, 0x1F, 0x7F, 0xE7, 0xFE, 0x7F, 0xC0, 0x0C, 0x07, 0x83, 0xF0, 0xFE, 0x13, 0x00, 0x03,
0xF9, 0xFE, 0x7F, 0x9E, 0x67, 0xF9, 0xFE, 0x3F, 0xD8, 0xF7, 0xFD, 0xFE, 0x7F, 0x00, 0x1F, 0xC3,
0xFE, 0x7F, 0xE7, 0xCC, 0x78, 0x07, 0xC0, 0x7F, 0x83, 0xFC, 0x0F, 0xE0, 0x1F, 0x00, 0xF7, 0x1F,
0x7F, 0xE7, 0xFE, 0x7F, 0xC0, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x01, 0xF0, 0x3F, 0x9F, 0xE7, 0xF9,
0xE6, 0x7F, 0x9F, 0xE3, 0xFD, 0x8F, 0x7F, 0x9F, 0xE7, 0xF0, 0x70, 0x1E, 0x03, 0x83, 0xE0, 0xF0,
0x09, 0x81, 0xFC, 0x1F, 0x80, 0xF0, 0x06, 0x00, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xCC, 0x78,
0x07, 0xC0, 0x7F, 0x83, 0xFC, 0x0F, 0xE0, 0x1F, 0x00, 0xF7, 0x1F, 0x7F, 0xE7, 0xFE, 0x7F, 0xC0,
0x13, 0x0F, 0xE1, 0xF0, 0x78, 0x0C, 0x00, 0x03, 0xF9, 0xFE, 0x7F, 0x9E, 0x67, 0xF9, 0xFE, 0x3F,
0xD8, 0xF7, 0xFD, 0xFE, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0x00, 0xF0, 0x07, 0x80,
0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0,
0x07, 0x00, 0xFC, 0x07, 0xC0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xFA,
0xFF, 0x7F, 0x3F, 0x1C, 0x0E, 0x3E, 0x3C, 0x09, 0x80, 0xFE, 0x03, 0xE0, 0x1E, 0x00, 0x60, 0x00,
0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01,
0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x00, 0x0F, 0x0E, 0xFE, 0xFE, 0xF0, 0xFF,
0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xFA, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E,
0x00, 0xF0, 0x07, 0x80, 0x3C, 0x0F, 0xFC, 0x7F, 0xE0, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07,
0x80, 0x3C, 0x00, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0xFA, 0xFF, 0x7F,
0x3F, 0x1E, 0xC1, 0xFE, 0x06, 0xF0, 0x00, 0x0F, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F,
0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC3, 0xFF, 0xBE, 0x7F, 0xF1, 0xFF, 0x07, 0xF0,
0x3D, 0x9F, 0xE7, 0xF0, 0x00, 0x00, 0x3C, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xFB,
0xFF, 0xF7, 0xFC, 0xFF, 0x1F, 0xC0, 0xFE, 0x00, 0x01, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE,
0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x7F, 0xF7, 0xCF, 0xFE, 0x3F, 0xE0,
0xFE, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0x00, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F,
0xEF, 0xFF, 0xDF, 0xF3, 0xFC, 0x1D, 0xC0, 0xFE, 0x03, 0xE0, 0x00, 0x0F, 0x07, 0xF8, 0x3F, 0xC1,
0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC3, 0xFF, 0xBE, 0x7F,
0xF1, 0xFF, 0x07, 0xF0, 0x7B, 0x8F, 0xE1, 0xF0, 0x00, 0x00, 0x3C, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC,
0xFF, 0x3F, 0xCF, 0xFB, 0xFF, 0xF7, 0xFC, 0xFF, 0x07, 0x00, 0x7C, 0x03, 0x60, 0x1B, 0x00, 0xF8,
0x07, 0x83, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1,
0xFE, 0x0F, 0xF0, 0xFF, 0xEF, 0x9F, 0xFC, 0x7F, 0xC1, 0xFC, 0x00, 0x1E, 0x07, 0xC3, 0xF0, 0xFC,
0x1F, 0x07, 0x80, 0x03, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0xBF, 0xFF, 0x7F,
0xCF, 0xF0, 0x06, 0x60, 0x77, 0x83, 0xB8, 0x3B, 0x81, 0x98, 0x00, 0x03, 0xC1, 0xFE, 0x0F, 0xF0,
0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, 0xEF, 0x9F,
0xFC, 0x7F, 0xC1, 0xFC, 0x00, 0x1C, 0xC3, 0xB8, 0xEE, 0x3D, 0xC3, 0x30, 0x00, 0x3C, 0xF7, 0x9E,
0xF3, 0xDE, 0x7B, 0xCF, 0x79, 0xEF, 0x3D, 0xF7, 0xBF, 0xF3, 0xFE, 0x3F, 0xC0, 0xF0, 0x7F, 0x83,
0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x3F, 0xFB,
0xE7, 0xFF, 0x1F, 0xF0, 0x7F, 0x00, 0xF0, 0x07, 0x00, 0x3E, 0x01, 0xF0, 0xF3, 0xFC, 0xFF, 0x3F,
0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xEF, 0xFF, 0xDF, 0xF3, 0xFC, 0x0E, 0x07, 0x01, 0xF0, 0x7C, 0x00,
0x60, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x01, 0x98, 0x00, 0x00, 0x00, 0xF0, 0x00,
0xFF, 0x80, 0x1F, 0x78, 0xF1, 0xE7, 0x8F, 0x1E, 0x78, 0xF9, 0xE7, 0x9F, 0x9E, 0x7D, 0xF9, 0xC3,
0xDF, 0xBC, 0x3F, 0xFF, 0xC3, 0xF9, 0xFC, 0x3F, 0x9F, 0x81, 0xF9, 0xF8, 0x1F, 0x0F, 0x81, 0xF0,
0xF8, 0x0F, 0x0F, 0x00, 0x01, 0x80, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x66, 0x00, 0x00,
0x03, 0xC7, 0x1D, 0xE7, 0x9E, 0x73, 0xCF, 0x3D, 0xF7, 0x9E, 0xFB, 0x87, 0xFF, 0xC3, 0xFF, 0xE1,
0xFB, 0xE0, 0x79, 0xF0, 0x3C, 0xF8, 0x1E, 0x38, 0x00, 0x03, 0x00, 0x1E, 0x00, 0xFC, 0x07, 0xF0,
0x0C, 0xC0, 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, 0x06, 0x00,
0xF0, 0x1F, 0x83, 0xF8, 0x19, 0x80, 0x00, 0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC,
0x3F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x0F, 0x01, 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, 0x1C, 0xE0,
0x7F, 0x81, 0xCE, 0x00, 0x00, 0xF8, 0x3F, 0xE1, 0xE7, 0xC7, 0x8F, 0x3C, 0x3F, 0xF0, 0x7F, 0x81,
0xFE, 0x03, 0xF0, 0x0F, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00,
0x01, 0x00, 0x1C, 0x01, 0xE0, 0x1E, 0x00, 0xE0, 0x00, 0x01, 0xFF, 0xCF, 0xFE, 0x7F, 0xF0, 0x0F,
0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x80, 0x7C, 0x07, 0xC0, 0x3C, 0x03, 0xE0, 0x1F, 0xFF, 0xFF,
0xFF, 0xFF, 0x80, 0x06, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x00, 0x07, 0xFD, 0xFF, 0x7F, 0xC1, 0xE0,
0xF0, 0x78, 0x3C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x78, 0x01, 0xC0, 0x00, 0x07,
0xFF, 0x3F, 0xF9, 0xFF, 0xC0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x1F, 0x00,
0xF0, 0x0F, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x0E, 0x07, 0x80, 0xE0, 0x00, 0x00, 0x1F, 0xF7,
0xFD, 0xFF, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0xFF, 0xFF, 0x08, 0x80, 0xFE, 0x03,
0xE0, 0x0E, 0x00, 0x30, 0x00, 0x01, 0xFF, 0xCF, 0xFE, 0x7F, 0xF0, 0x0F, 0x80, 0xF8, 0x0F, 0x80,
0xF8, 0x07, 0x80, 0x7C, 0x07, 0xC0, 0x3C, 0x03, 0xE0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x13,
0x0F, 0xE3, 0xF0, 0x78, 0x0C, 0x00, 0x07, 0xFD, 0xFF, 0x7F, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E,
0x07, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0x3F, 0xBF, 0xDF, 0x6F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78,
0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0x7E, 0x7F, 0xF7, 0x0C, 0x03, 0x80, 0x78, 0x07, 0x80,
0x70, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0xFD, 0xFF, 0xBF, 0xF7, 0x80,
0xF0, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0x3B, 0xCF, 0x78, 0xEF, 0x00, 0x00, 0x01, 0xFF, 0xFF,
0xFF, 0xFF, 0xF0, 0x1E, 0x03, 0xC0, 0x7F, 0xEF, 0xFD, 0xFF, 0xBC, 0x07, 0x80, 0xF0, 0x1F, 0xFF,
0xFF, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, 0x3F, 0xFE, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7F, 0xE0,
0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x1F, 0x07, 0x83, 0x83, 0xC1, 0xE1, 0xE1, 0xE0, 0xF7, 0xF0, 0x7B,
0xF0, 0x3D, 0xF0, 0x02, 0x00, 0xE0, 0x3C, 0x0F, 0x00, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE,
0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x00,
0x0F, 0xF1, 0xFF, 0xDF, 0xFC, 0xF8, 0xEF, 0x80, 0x78, 0x03, 0xFF, 0x1F, 0xF8, 0xFF, 0xC7, 0x80,
0x3E, 0x00, 0xF8, 0xE7, 0xFF, 0x1F, 0xFC, 0x7F, 0xC0, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xCC, 0x78,
0x07, 0xC0, 0x7F, 0x83, 0xFC, 0x0F, 0xE0, 0x1F, 0x00, 0xF7, 0x1F, 0x7F, 0xE7, 0xFE, 0x7F, 0xC0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF7, 0x7B, 0xFD, 0xC0, 0x03, 0xC1, 0xE0, 0xF0,
0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x00, 0x03, 0xC0,
0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3D, 0x9F, 0xFF, 0xFF, 0xE7,
0xF0, 0x07, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x01,
0xE3, 0xFF, 0x03, 0xC7, 0xFF, 0x07, 0x8F, 0xFF, 0x0F, 0x1E, 0x7E, 0x1E, 0x3C, 0x3C, 0x78, 0x78,
0x7B, 0xF0, 0xF1, 0xFF, 0xC1, 0xFF, 0xFF, 0x83, 0xFF, 0xBC, 0x07, 0xFC, 0x00, 0xF0, 0x78, 0x07,
0x83, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0xDF,
0xFF, 0xFE, 0xF0, 0x79, 0xFF, 0x83, 0xC3, 0xFC, 0x1E, 0x1F, 0xE0, 0xF3, 0xFF, 0x07, 0xFF, 0x78,
0x3F, 0xFB, 0xC1, 0xFF, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0x00, 0x0F, 0x00, 0x0F,
0x00, 0x0F, 0xFC, 0x0F, 0xFE, 0x0F, 0xFE, 0x0F, 0x3F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
0x0F, 0x0F, 0x0F, 0x01, 0x80, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x0F, 0x0F, 0xBC,
0x7C, 0xF3, 0xE3, 0xDF, 0x0F, 0xF8, 0x3F, 0xC0, 0xFE, 0x03, 0xFC, 0x0F, 0xF8, 0x3D, 0xF0, 0xF3,
0xC3, 0xCF, 0x8F, 0x1F, 0x3C, 0x3C, 0xF0, 0xF8, 0x06, 0x00, 0x3C, 0x00, 0xF8, 0x00, 0xE0, 0x01,
0x80, 0x00, 0x0F, 0x03, 0xFC, 0x1F, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFC, 0xFF, 0xF7, 0xBF, 0xDE,
0xFF, 0xF3, 0xFF, 0x8F, 0xFE, 0x3F, 0xF0, 0xFF, 0x83, 0xFE, 0x0F, 0xF0, 0x3C, 0x0C, 0xC0, 0x7B,
0x80, 0xFE, 0x01, 0xF0, 0x00, 0x03, 0xE1, 0xF7, 0x87, 0x9F, 0x1E, 0x3C, 0x78, 0xF3, 0xC1, 0xEF,
0x07, 0xB8, 0x0F, 0xE0, 0x3F, 0x80, 0x7C, 0x01, 0xF0, 0x4F, 0x81, 0xFE, 0x07, 0xF0, 0x1F, 0x80,
0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83,
0xFC, 0x1F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07,
0xC0, 0x0F, 0x80, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x07, 0xBC, 0x0E, 0x3C, 0x3C, 0x78,
0x7F, 0xF1, 0xFF, 0xF3, 0xFF, 0xE7, 0x83, 0xDE, 0x03, 0xFC, 0x07, 0x80, 0xFF, 0xEF, 0xFE, 0xFF,
0xEF, 0x00, 0xF0, 0x0F, 0xF8, 0xFF, 0xEF, 0xFF, 0xF3, 0xFF, 0x0F, 0xF0, 0xFF, 0x3F, 0xFF, 0xEF,
0xFE, 0xFF, 0x80, 0xFF, 0xC7, 0xFF, 0x3F, 0xFD, 0xE3, 0xEF, 0x1F, 0x7F, 0xF3, 0xFF, 0x9F, 0xFE,
0xF1, 0xF7, 0x87, 0xBC, 0x3D, 0xE3, 0xEF, 0xFF, 0x7F, 0xF3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C,
0x00, 0x0F, 0xFE, 0x07, 0xFF, 0x03, 0xFF, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78,
0x1E, 0x3C, 0x0F, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x87, 0xC3, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F,
0x01, 0xE0, 0x3F, 0xF7, 0xFE, 0xFF, 0xDE, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8,
0xF0, 0xF3, 0xE7, 0x8F, 0x8F, 0x3C, 0xF8, 0x7D, 0xEF, 0x81, 0xFF, 0x7C, 0x07, 0xFF, 0xC0, 0x1F,
0xFC, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFD, 0xF0, 0x7D, 0xE7, 0xC7, 0xCF,
0x1E, 0x3C, 0x78, 0xFB, 0xE3, 0xC3, 0xE0, 0x3F, 0x87, 0xFE, 0x7F, 0xE3, 0x1F, 0x01, 0xF0, 0x3E,
0x1F, 0xE1, 0xFE, 0x1F, 0xF0, 0x1F, 0x00, 0xF7, 0x1F, 0x7F, 0xFF, 0xFE, 0x7F, 0xC0, 0xF0, 0x3F,
0xC1, 0xFF, 0x0F, 0xFC, 0x7F, 0xF1, 0xFF, 0xCF, 0xFF, 0x7B, 0xFD, 0xEF, 0xFF, 0x3F, 0xF8, 0xFF,
0xE3, 0xFF, 0x0F, 0xF8, 0x3F, 0xE0, 0xFF, 0x03, 0xC0, 0x0C, 0xC0, 0x7B, 0x80, 0xFE, 0x01, 0xF0,
0x00, 0x03, 0xC0, 0xFF, 0x07, 0xFC, 0x3F, 0xF1, 0xFF, 0xC7, 0xFF, 0x3F, 0xFD, 0xEF, 0xF7, 0xBF,
0xFC, 0xFF, 0xE3, 0xFF, 0x8F, 0xFC, 0x3F, 0xE0, 0xFF, 0x83, 0xFC, 0x0F, 0xF0, 0xFB, 0xC7, 0xCF,
0x3E, 0x3D, 0xF0, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, 0xFF, 0x83, 0xDF, 0x0F, 0x3C, 0x3C,
0xF8, 0xF1, 0xF3, 0xC3, 0xCF, 0x0F, 0x80, 0x07, 0xFE, 0x0F, 0xFC, 0x1F, 0xF8, 0x78, 0xF0, 0xF1,
0xE1, 0xE3, 0xC3, 0xC7, 0x87, 0x8F, 0x0F, 0x1E, 0x1E, 0x3C, 0x78, 0x7B, 0xF0, 0xFF, 0xC1, 0xFF,
0x83, 0xFC, 0x07, 0x80, 0x78, 0x0F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0xC7, 0xE7, 0xE3, 0xF7, 0xF1,
0xFB, 0xFD, 0xFD, 0xEE, 0xEF, 0xF7, 0xF7, 0xFB, 0xF3, 0xFC, 0xF9, 0xFE, 0x7C, 0xFF, 0x1C, 0x7F,
0x80, 0x3F, 0xC0, 0x1E, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0, 0x0F, 0xE0, 0x7F,
0xE1, 0xFF, 0xE3, 0xE7, 0xEF, 0x83, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x7F,
0xE0, 0xF3, 0xE7, 0xE7, 0xFF, 0x87, 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0,
0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8,
0x3F, 0xC1, 0xE0, 0xFF, 0xCF, 0xFE, 0xFF, 0xFF, 0x1F, 0xF0, 0xFF, 0x0F, 0xF3, 0xFF, 0xFF, 0xFF,
0xEF, 0xFC, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x0F, 0xF1, 0xFF, 0x9F, 0xFC, 0xFD,
0xEF, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3E, 0x01, 0xF8, 0xE7, 0xFF, 0x1F,
0xF8, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0,
0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF8, 0x7D, 0xE1, 0xE7,
0xC7, 0x8F, 0x1E, 0x3C, 0xF0, 0x7B, 0xC1, 0xEE, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0x00, 0x7C, 0x13,
0xE0, 0x7F, 0x81, 0xFC, 0x07, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0xFF, 0xC0, 0x7F, 0xFC,
0x3F, 0xFF, 0x1F, 0xFF, 0xE7, 0x9E, 0x79, 0xE7, 0x8F, 0x79, 0xE3, 0xDE, 0x79, 0xE7, 0xFF, 0xF8,
0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xFF, 0x00, 0x1E, 0x00, 0x07, 0x80, 0xF8, 0x7D, 0xF1, 0xE3, 0xCF,
0x8F, 0xFC, 0x1F, 0xE0, 0x3F, 0x80, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x7F, 0x81, 0xFF, 0x0F, 0xFC,
0x7C, 0xF9, 0xE1, 0xFF, 0x87, 0xC0, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78,
0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xF0, 0x7F, 0x83, 0xFC,
0x1F, 0xE0, 0xFF, 0x87, 0xBC, 0x3D, 0xF1, 0xEF, 0xFF, 0x3F, 0xF8, 0xFF, 0xC0, 0x1E, 0x00, 0xF0,
0x07, 0x80, 0x3C, 0x01, 0xE0, 0xF0, 0xF1, 0xFE, 0x1E, 0x3F, 0xC3, 0xC7, 0xF8, 0x78, 0xFF, 0x0F,
0x1F, 0xE1, 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0xF0, 0xF1, 0xFE, 0x1E, 0x3F, 0xC3, 0xC7, 0xF8,
0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F,
0x1E, 0x3C, 0x3C, 0x78, 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0,
0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xFF, 0x00,
0xFF, 0x00, 0xFF, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xF8, 0x0F, 0xFC, 0x0F, 0xFE, 0x0F, 0x3E,
0x0F, 0x1F, 0x0F, 0x1F, 0x0F, 0x3E, 0x0F, 0xFE, 0x0F, 0xFC, 0x0F, 0xF8, 0xF0, 0x07, 0xF8, 0x03,
0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x7F, 0xFC, 0x3F, 0xFF, 0x9F, 0xFF, 0xCF, 0xF3, 0xF7, 0xF8,
0x7B, 0xFC, 0x3D, 0xFE, 0x7E, 0xFF, 0xFE, 0x7F, 0xFF, 0x3F, 0xFE, 0x1E, 0xF0, 0x0F, 0x00, 0xF0,
0x0F, 0x00, 0xF0, 0x0F, 0xFC, 0xFF, 0xEF, 0xFF, 0xF3, 0xFF, 0x0F, 0xF0, 0xFF, 0x3F, 0xFF, 0xFF,
0xFE, 0xFF, 0x80, 0x3F, 0xC1, 0xFF, 0x87, 0xFF, 0x1C, 0x7E, 0x00, 0x78, 0x01, 0xE1, 0xFF, 0xC7,
0xFF, 0x1F, 0xFC, 0x01, 0xE0, 0x07, 0x9C, 0x7E, 0x7F, 0xF1, 0xFF, 0x83, 0xFC, 0x00, 0xF0, 0x3F,
0x87, 0x83, 0xFF, 0x3C, 0x3F, 0xF9, 0xE3, 0xF3, 0xEF, 0x1E, 0x0F, 0xF9, 0xF0, 0x3F, 0xFF, 0x01,
0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x9F, 0x03, 0xFC, 0x78, 0x3F, 0xE3, 0xF3, 0xEF, 0x0F, 0xFF,
0x78, 0x7F, 0xF3, 0xC0, 0xFE, 0x00, 0x0F, 0xF8, 0xFF, 0xCF, 0xFE, 0x7C, 0xF7, 0x87, 0xBC, 0x3D,
0xF9, 0xE7, 0xFF, 0x3F, 0xF8, 0xFF, 0xC7, 0x9E, 0x7C, 0xF3, 0xC7, 0xBE, 0x3D, 0xE1, 0xE0, 0x3F,
0x87, 0xF8, 0xFF, 0x19, 0xF3, 0xFE, 0xFF, 0xDE, 0x7F, 0xCF, 0x7F, 0xEF, 0xFC, 0xFF, 0x00, 0x03,
0xE0, 0xFE, 0x1F, 0xE3, 0xFC, 0x7C, 0x07, 0xFC, 0x7F, 0xE7, 0xFE, 0x79, 0xF7, 0x8F, 0x78, 0xF7,
0x8F, 0x7D, 0xF7, 0xFE, 0x3F, 0xE1, 0xF8, 0xFF, 0x9F, 0xFB, 0xFF, 0x79, 0xEF, 0xFD, 0xFF, 0xBC,
0x7F, 0x8F, 0xFF, 0xFF, 0xFB, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x0F, 0x07, 0x83, 0xC1, 0xE0,
0xF0, 0x78, 0x3C, 0x00, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xBC, 0x1E, 0xF0, 0x73, 0xC3, 0xCF,
0x0F, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x70, 0x1F, 0x83, 0xFE,
0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07, 0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0xF9, 0xE7,
0x9F, 0x7B, 0xE3, 0xDF, 0xF0, 0x7F, 0xF8, 0x1F, 0xFC, 0x03, 0xFF, 0x01, 0xFF, 0xE0, 0xFF, 0xF8,
0x3D, 0xEF, 0x1E, 0x79, 0xEF, 0x9E, 0x7C, 0x7F, 0x1F, 0xE7, 0xFD, 0x9F, 0x3F, 0x8F, 0xE0, 0x3D,
0x8F, 0x7F, 0xFF, 0xE7, 0xF0, 0xF1, 0xFE, 0x7F, 0xDF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0xF9, 0xFF, 0x3F, 0xC7, 0x80, 0x31, 0x87, 0x70, 0xFE, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0x7F, 0x9F,
0xF7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0x7F, 0xCF, 0xF1, 0xE0, 0xF3, 0xEF, 0x7C,
0xFF, 0x8F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFF, 0x0F, 0xF8, 0xF7, 0xCF, 0x3C, 0xF1, 0xE0, 0x1F, 0xF1,
0xFF, 0x1F, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x3C, 0xF7, 0xCF, 0xFC, 0xFF, 0x8F, 0xF0, 0xF0, 0x70,
0x39, 0xE1, 0xEF, 0x8F, 0xFF, 0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xF7, 0xBF, 0xDE,
0xFF, 0x03, 0xC0, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF3, 0xFC, 0xFF,
0x3C, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0xDF, 0x7F, 0xE3, 0xFE,
0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3C,
0xFF, 0x1F, 0xFB, 0xFF, 0x79, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x9F, 0xFF, 0xDF, 0xFB, 0xFE, 0x78,
0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x1F, 0xCF, 0xF7, 0xFD, 0xF2, 0x78, 0x1E, 0x07, 0x81, 0xF3, 0x7F,
0xCF, 0xF1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01,
0xC0, 0x38, 0x00, 0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F,
0x81, 0xF0, 0x0F, 0x01, 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF8, 0x3F, 0xFC, 0x7F, 0xFE, 0x7F, 0xDF, 0x7B, 0xCF, 0x7B, 0xCF,
0x7B, 0xCF, 0x7F, 0xDF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
0x03, 0xC0, 0xF1, 0xE7, 0x9E, 0x3F, 0xC3, 0xF8, 0x1F, 0x80, 0xF0, 0x1F, 0x83, 0xFC, 0x7B, 0xC7,
0x9E, 0xF1, 0xF0, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF,
0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x71, 0xEE, 0x3D, 0xC7, 0xB8, 0xF7, 0x9E, 0xFF,
0xDF, 0xF9, 0xFF, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF,
0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF, 0xF3, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xCF,
0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0xFE, 0x07,
0xF0, 0x3F, 0x80, 0x3C, 0x01, 0xFE, 0x0F, 0xF8, 0x7F, 0xE3, 0xCF, 0x1F, 0xF8, 0xFF, 0xC7, 0xF8,
0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0xF9, 0xFF, 0xFB, 0xFF, 0xF7, 0xF9, 0xEF, 0xFF,
0xDF, 0xFF, 0xBF, 0xFE, 0x78, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0xF9, 0xFF, 0xBF, 0xF7, 0x9E,
0xFF, 0xDF, 0xFB, 0xFE, 0x00, 0x7F, 0x0F, 0xF1, 0xFF, 0x31, 0xE3, 0xFC, 0x7F, 0xC0, 0xF3, 0x3E,
0x7F, 0xDF, 0xF3, 0xFC, 0x00, 0xF0, 0xFC, 0x78, 0xFF, 0x3C, 0xFF, 0xDE, 0x7D, 0xEF, 0xFC, 0x7F,
0xFC, 0x3F, 0xFF, 0x1F, 0xE7, 0x9E, 0xF3, 0xFF, 0x78, 0xFF, 0x3C, 0x3F, 0x00, 0x1F, 0xE7, 0xFD,
0xFF, 0xBC, 0xF7, 0x9E, 0xFF, 0xDF, 0xF9, 0xFF, 0x3D, 0xEF, 0x3D, 0xE7, 0x80, 0x0C, 0x00, 0xE0,
0x0F, 0x00, 0x78, 0x03, 0x00, 0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78,
0x07, 0xC6, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x3D, 0xC3, 0xDE, 0x3D, 0xC0, 0x00, 0x00, 0x01, 0xF8,
0x3F, 0xE7, 0xFE, 0x79, 0xF7, 0xFF, 0x7F, 0xF7, 0x80, 0x7C, 0x67, 0xFE, 0x3F, 0xE1, 0xFE, 0x78,
0x07, 0x80, 0xFF, 0x0F, 0xF0, 0x78, 0x07, 0xFC, 0x7F, 0xE7, 0xFE, 0x79, 0xE7, 0x8F, 0x78, 0xF7,
0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x01, 0xF0, 0x7E, 0x07, 0xE0, 0x7C, 0x0C, 0x07, 0x07,
0x87, 0x83, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xF8, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0,
0x00, 0x1F, 0xC7, 0xF9, 0xFF, 0x3C, 0x6F, 0xF1, 0xFE, 0x3C, 0x03, 0xE6, 0x7F, 0xC7, 0xFC, 0x7F,
0x00, 0x3F, 0x9F, 0xE7, 0xF9, 0xE6, 0x7F, 0x9F, 0xE3, 0xFD, 0x8F, 0x7F, 0xDF, 0xE7, 0xF0, 0xFF,
0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x73, 0xBF, 0xDC, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x3C,
0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x3C, 0x78, 0xF0, 0x03, 0xC7, 0x8F,
0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1F, 0xFF, 0xF7, 0xC0, 0x1F, 0xF0, 0x03, 0xFE, 0x00,
0x7F, 0xC0, 0x0F, 0x78, 0x01, 0xEF, 0xF8, 0x3D, 0xFF, 0x8F, 0x3F, 0xF3, 0xE7, 0x9F, 0xFC, 0xFF,
0xDF, 0x1F, 0xFB, 0xC3, 0xFE, 0x00, 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0xFF,
0xE7, 0xFF, 0xFB, 0xFF, 0xFF, 0xE7, 0x9F, 0xF3, 0xFF, 0xF9, 0xFF, 0xBC, 0x7F, 0x80, 0x78, 0x07,
0x80, 0xFF, 0x0F, 0xF0, 0x78, 0x07, 0xFC, 0x7F, 0xE7, 0xFE, 0x79, 0xE7, 0x8F, 0x78, 0xF7, 0x8F,
0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x02, 0x00, 0x70, 0x0F, 0x01, 0xE0, 0x0C, 0x00, 0x00, 0xF3,
0xEF, 0x7C, 0xFF, 0x8F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFF, 0x0F, 0xF8, 0xF7, 0xCF, 0x3C, 0xF1, 0xE0,
0x18, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xE0, 0x00, 0x3C, 0x7F, 0x9F, 0xF7, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFB, 0xFE, 0x7F, 0xCF, 0xF1, 0xE0, 0x19, 0x83, 0xBC, 0x3F, 0x81, 0xF0, 0x00, 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, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
0x3F, 0xCF, 0xFF, 0xFF, 0xFF, 0xFC, 0x78, 0x1E, 0x07, 0x80, 0x1E, 0x00, 0x3C, 0x03, 0xFF, 0x87,
0xFF, 0x0F, 0xFE, 0x03, 0xC0, 0x07, 0xFC, 0x0F, 0xFE, 0x1F, 0xFE, 0x3C, 0xFC, 0x78, 0x78, 0xF0,
0xF1, 0xE7, 0xE3, 0xFF, 0x87, 0xFF, 0x0F, 0xF8, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0,
0x7F, 0xE3, 0xFF, 0x1F, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0xF8, 0x7F, 0xE3, 0xCF, 0x9F, 0xFC, 0xFF,
0xC3, 0xFC, 0x0F, 0xE0, 0x7F, 0xE1, 0xFF, 0xE3, 0xE7, 0xEF, 0x03, 0xDF, 0xF7, 0xFF, 0xFF, 0xFF,
0xFF, 0xFB, 0xFF, 0xE0, 0x7F, 0xE0, 0xF3, 0xF7, 0xE7, 0xFF, 0x87, 0xFF, 0x03, 0xF8, 0x00, 0x1F,
0xC3, 0xFE, 0x7F, 0xE7, 0xDF, 0x7E, 0xF7, 0xFF, 0x7F, 0xF7, 0xDF, 0x7F, 0xE3, 0xFE, 0x1F, 0xC0,
0xF0, 0x0F, 0xBE, 0x07, 0xE7, 0x83, 0xF9, 0xE0, 0xF4, 0x7C, 0x3C, 0x0F, 0x1E, 0x03, 0xC7, 0x80,
0x7B, 0xC0, 0x1E, 0xF0, 0x07, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x01, 0xF0, 0x00,
0x7C, 0x00, 0xF0, 0xFF, 0x8F, 0xDE, 0x7E, 0xF3, 0x87, 0xBC, 0x1D, 0xE0, 0xFE, 0x03, 0xF0, 0x1F,
0x00, 0xF8, 0x03, 0xC0, 0x1E, 0xE0, 0x0F, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF0, 0x3C, 0xF0, 0x7C,
0xF0, 0xFC, 0xF1, 0xFC, 0xF1, 0xFC, 0xF3, 0xFC, 0xF7, 0xBC, 0xF7, 0xBC, 0xFF, 0x3C, 0xFE, 0x3C,
0xFE, 0x3C, 0xFC, 0x3C, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x3F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C,
0x00, 0x1C, 0x7B, 0x83, 0xFC, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x78, 0xE3, 0xCF, 0x1E, 0xF8, 0xFF,
0xC7, 0xFE, 0x3F, 0xF1, 0xFB, 0x8F, 0x9C, 0x7C, 0xFB, 0xC7, 0xDE, 0x3E, 0x00, 0xF0, 0x0F, 0x00,
0x30, 0x38, 0x01, 0xC0, 0x3F, 0xC1, 0xFE, 0x03, 0x80, 0x1F, 0xF0, 0xFF, 0xC7, 0xFF, 0x38, 0xF9,
0xC3, 0xCE, 0x1E, 0x71, 0xF3, 0xFF, 0x9F, 0xF8, 0xFF, 0x80, 0x78, 0x0F, 0xF0, 0xFF, 0x07, 0x80,
0x7F, 0xC7, 0xFE, 0x79, 0xE7, 0x9F, 0x7F, 0xE7, 0xFE, 0x7F, 0xC0, 0xFF, 0xCF, 0xFE, 0xFF, 0xFF,
0x1F, 0xF2, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xEF, 0xFC, 0xF1, 0xEF, 0x0E, 0xF0, 0x8F, 0x00,
0xF0, 0x00, 0xFF, 0x9F, 0xFB, 0xFF, 0xF9, 0xFF, 0x1F, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB,
0xFF, 0x78, 0xEF, 0x1D, 0xE1, 0x3C, 0x00, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x00,
0x07, 0x83, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x80,
0x3F, 0xF3, 0xFF, 0x3F, 0xF3, 0xC0, 0x3C, 0x03, 0xC0, 0xFF, 0x8F, 0xF8, 0xFF, 0x83, 0xC0, 0x3C,
0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x7F, 0xDF, 0xF7, 0xFD, 0xE0, 0x78, 0x3F, 0xCF, 0xF1,
0xE0, 0x78, 0x1E, 0x07, 0x80, 0xFF, 0xE7, 0xFF, 0x3F, 0xF9, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xFF,
0x1F, 0xFC, 0xFF, 0xF7, 0x8F, 0xBC, 0x3D, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC3, 0xC0, 0x3E, 0x07,
0xF0, 0x3F, 0x01, 0xF0, 0xFF, 0x9F, 0xF3, 0xFE, 0x78, 0x0F, 0x01, 0xFE, 0x3F, 0xE7, 0xFE, 0xF3,
0xDE, 0x3F, 0xC7, 0x81, 0xE0, 0xFC, 0x1F, 0x83, 0xE0, 0xF8, 0xF0, 0xF1, 0xF3, 0xC7, 0xC3, 0xCF,
0x3E, 0x0F, 0xBD, 0xF0, 0x1F, 0xF7, 0xC0, 0x3F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F,
0xFF, 0x00, 0x3F, 0xFE, 0x01, 0xFF, 0x7C, 0x0F, 0xBD, 0xF8, 0x7C, 0xF3, 0xF9, 0xE3, 0xC7, 0xEF,
0x8F, 0x0F, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0xF9, 0xE7,
0x9F, 0x7B, 0xE3, 0xDF, 0xF0, 0x7F, 0xF8, 0x1F, 0xFC, 0x03, 0xFF, 0x01, 0xFF, 0xE0, 0xFF, 0xFC,
0x3D, 0xFF, 0xDE, 0x7B, 0xFF, 0x9E, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x3F, 0x87,
0xFE, 0x7F, 0xE3, 0x1F, 0x01, 0xF0, 0x3E, 0x1F, 0xE1, 0xFE, 0x1F, 0xF0, 0x1F, 0x00, 0xF7, 0x1F,
0x7F, 0xFF, 0xFE, 0x7F, 0xC0, 0x60, 0x0F, 0x00, 0x70, 0x1F, 0x01, 0xF0, 0x7F, 0x1F, 0xE7, 0xFD,
0x9F, 0x3F, 0x8F, 0xE0, 0x3D, 0x8F, 0x7F, 0xFF, 0xEF, 0xF8, 0x30, 0x0E, 0x03, 0x83, 0xE0, 0xF8,
0xF0, 0xF9, 0xE3, 0xE3, 0xCF, 0x87, 0xBE, 0x0F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, 0xFF,
0x81, 0xFF, 0x83, 0xDF, 0x87, 0x9F, 0x0F, 0x1F, 0xDE, 0x1F, 0xBC, 0x1F, 0x00, 0x0E, 0x00, 0x1C,
0x00, 0x38, 0x00, 0x70, 0xF3, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFF, 0x0F, 0xF8,
0xF7, 0xFF, 0x3F, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0xF0, 0x3E, 0xF0, 0x3C, 0xF6, 0x7C, 0xF6,
0xF8, 0xF7, 0xF0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xF7, 0xF0, 0xF6, 0xF8, 0xF6, 0xF8, 0xF0,
0x7C, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0xFB, 0xF3, 0xCF, 0xDE, 0x3F, 0xF0, 0xFF, 0x83,
0xFF, 0x0F, 0xFE, 0x3F, 0x78, 0xF1, 0xF3, 0xC3, 0xEF, 0x07, 0x80, 0x3C, 0x00, 0x78, 0x7F, 0xF9,
0xF7, 0xF7, 0xC3, 0xDF, 0x07, 0xFC, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFF, 0x81,
0xEF, 0x03, 0xCF, 0x07, 0x9F, 0x0F, 0x1F, 0x1E, 0x1E, 0x78, 0x07, 0xF7, 0xFF, 0xFD, 0xFF, 0xC7,
0xFC, 0x3F, 0xC1, 0xFC, 0x0F, 0xF0, 0x7F, 0xC3, 0xDF, 0x1E, 0x7C, 0xF1, 0xE0, 0xFF, 0x1F, 0x7F,
0x9F, 0x3F, 0xCF, 0x01, 0xEF, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x3F, 0x80, 0x1F, 0xE0, 0x0F, 0xF0,
0x07, 0xBC, 0x03, 0xDF, 0x01, 0xE7, 0xC0, 0xF1, 0xE0, 0x78, 0xF8, 0x3C, 0x3E, 0xFE, 0x7B, 0xFB,
0xCF, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFE, 0x07, 0xFC, 0x1E, 0xF8, 0x79, 0xE1, 0xE7,
0xC0, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xFF, 0xF8, 0xFF,
0xF8, 0xFF, 0xF8, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0, 0x7F, 0x00,
0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xCF, 0xFC,
0xFF, 0xCF, 0x3C, 0xF3, 0xFF, 0x3F, 0xF3, 0xF0, 0x07, 0x00, 0x70, 0x07, 0xF0, 0x7F, 0xF8, 0x3F,
0xFC, 0x1F, 0xFE, 0x0F, 0x0F, 0x07, 0x87, 0x83, 0xC3, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xF8, 0x78,
0x3C, 0x3C, 0x1E, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE0, 0xF3, 0xFF, 0x9F, 0xFC,
0xFF, 0xE7, 0x8F, 0xFC, 0x7F, 0xE3, 0xFF, 0x1E, 0x78, 0xF3, 0xC7, 0x9E, 0x3C, 0xF0, 0xFF, 0xF8,
0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07,
0xFE, 0x3C, 0x1F, 0xFC, 0xF0, 0x7F, 0xFB, 0xC1, 0xE3, 0xEF, 0x07, 0x87, 0xBC, 0x1E, 0x0F, 0xF0,
0x78, 0x3F, 0xC1, 0xE0, 0xFF, 0x07, 0x87, 0x80, 0x00, 0x3E, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0,
0x00, 0x3E, 0x00, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1E, 0x78, 0x0F, 0x3F, 0xE7, 0x9F, 0xFB,
0xCF, 0xFD, 0xE7, 0x9F, 0xF3, 0xC7, 0xF9, 0xE3, 0xFC, 0xF1, 0xE0, 0x01, 0xF0, 0x03, 0xF0, 0x01,
0xF8, 0x00, 0xF8, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7E, 0x60, 0xF8, 0x00, 0xF1, 0xFC, 0xF3,
0xFE, 0xF3, 0xFE, 0xF7, 0xDE, 0xF7, 0x8E, 0xF7, 0x9E, 0xFF, 0xBE, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F,
0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, 0x1E, 0x1F, 0xC1, 0xFE, 0x1F, 0xE0, 0xFF, 0xE7,
0x3F, 0xBB, 0xDD, 0xDC, 0xEF, 0xEF, 0x7F, 0xF9, 0xFF, 0x87, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7C,
0x0F, 0xF1, 0xFF, 0x9F, 0xFC, 0xFD, 0xEF, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80,
0x3E, 0x00, 0xF8, 0xE7, 0xFF, 0x1F, 0xF8, 0x3F, 0xC0, 0xE0, 0x07, 0x80, 0x1C, 0x03, 0xE0, 0x1F,
0x00, 0x1F, 0xCF, 0xF7, 0xFD, 0xF2, 0x78, 0x1E, 0x07, 0x81, 0xF3, 0x7F, 0xCF, 0xF0, 0xFC, 0x3C,
0x07, 0x07, 0xC1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01,
0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0x80, 0x3C, 0x01, 0xE0,
0x0F, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1F, 0x83,
0xF0, 0x7E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xF8, 0x3F, 0xE1, 0xE7, 0xC7, 0x8F, 0x3C, 0x3F, 0xF0,
0x7F, 0x81, 0xFE, 0x03, 0xF0, 0x0F, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00,
0x78, 0x00, 0xF1, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F, 0x80,
0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF8, 0x3F, 0xE1, 0xE7, 0x87, 0x8F, 0x3C,
0x3F, 0xF0, 0x7F, 0x81, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0xFF, 0xC3, 0xFF, 0x01, 0xE0, 0x07, 0x80,
0x1E, 0x00, 0x78, 0x00, 0xF1, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8,
0x1F, 0x87, 0xFC, 0x7F, 0xC0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF8, 0x7C, 0xF8, 0xF0, 0xF3,
0xE1, 0xFF, 0x81, 0xFE, 0x01, 0xFC, 0x03, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, 0xC0, 0x7F, 0xC1,
0xFF, 0x87, 0xCF, 0xEF, 0x0F, 0xFE, 0x1F, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0xF9,
0xE7, 0x9E, 0x3F, 0xC3, 0xF8, 0x1F, 0x80, 0xF0, 0x1F, 0x83, 0xFC, 0x7F, 0xF7, 0x9F, 0xF1, 0xF0,
0x07, 0x00, 0x70, 0x07, 0xFF, 0xF7, 0x8F, 0xFF, 0x78, 0xFF, 0xF7, 0x80, 0xF0, 0x78, 0x0F, 0x07,
0x80, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x78, 0x0F, 0x07, 0x80,
0xF0, 0x78, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00,
0x0E, 0x00, 0x00, 0xE0, 0xFF, 0x79, 0xFE, 0xF3, 0xFD, 0xE1, 0xE3, 0xC3, 0xC7, 0x87, 0x8F, 0x0F,
0x1E, 0x1E, 0x3C, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0xF0,
0xF3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xF3, 0xC3, 0xCF, 0x8F, 0x3F, 0xFC, 0x7F, 0xF0, 0xFF,
0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03,
0xC0, 0xF1, 0xE7, 0x8F, 0x3C, 0x79, 0xE3, 0xCF, 0x9E, 0x7F, 0xF1, 0xFF, 0x87, 0xFC, 0x01, 0xF8,
0x0F, 0xC0, 0x7E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF,
0x6F, 0xFE, 0xFF, 0xFF, 0x7F, 0xF3, 0xFF, 0x06, 0xF0, 0x6F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF1,
0xFE, 0x3F, 0xC7, 0xFB, 0xFF, 0xFF, 0xFF, 0xDF, 0xF9, 0xFF, 0x07, 0xE0, 0xFC, 0x07, 0x80, 0xF0,
0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x7F, 0xF3, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x83, 0xFC,
0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3F, 0xEF,
0xFF, 0xFF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0x3F, 0xCF, 0x01, 0xFE, 0x00, 0xFF,
0xCE, 0x7F, 0xFB, 0xBF, 0x3E, 0xFF, 0x07, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x0F, 0x00,
0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x9C, 0x07, 0xFF, 0x80, 0xFF, 0xE0, 0x0F, 0xF0, 0xC3, 0xF3,
0x9F, 0xEE, 0xFF, 0xFF, 0xCF, 0x7F, 0xFC, 0xFF, 0xF1, 0xE0, 0x03, 0xE6, 0x0F, 0xF8, 0x1F, 0xF0,
0x3F, 0x80, 0x01, 0xFC, 0x00, 0xFF, 0xC0, 0x7F, 0xFB, 0x9F, 0x3E, 0xEF, 0x87, 0xBF, 0xC0, 0xFF,
0xFF, 0xFD, 0xFF, 0xFF, 0x3F, 0xFF, 0xC3, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x1C, 0x07, 0xFF, 0x80,
0xFF, 0xE0, 0x1F, 0xF0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xF3, 0x1F,
0xEE, 0xFF, 0xFB, 0xDF, 0xFE, 0x3D, 0xFF, 0xF3, 0xFF, 0xC7, 0xC6, 0x0F, 0xF8, 0x3F, 0xF0, 0x3F,
0x80, 0x78, 0x01, 0xE0, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, 0x98,
0x00, 0x1E, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x7C, 0x78, 0x79, 0xF3, 0xC7,
0xC7, 0x9E, 0x7C, 0x3E, 0xF7, 0xC0, 0xFF, 0xBE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xE0,
0x07, 0xFF, 0x80, 0x3F, 0xFE, 0x03, 0xFE, 0xF8, 0x3E, 0xF3, 0xE3, 0xE7, 0x8F, 0x1E, 0x3C, 0x7D,
0xF1, 0xE1, 0xF0, 0x03, 0x30, 0x01, 0xDE, 0x00, 0x7F, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00,
0x0F, 0x9E, 0x79, 0xF7, 0xBE, 0x3D, 0xFF, 0x07, 0xFF, 0x81, 0xFF, 0xC0, 0x3F, 0xF0, 0x1F, 0xFE,
0x0F, 0xFF, 0x83, 0xDE, 0xF1, 0xE7, 0x9E, 0xF9, 0xE7, 0xC0, 0xF0, 0xFF, 0x8F, 0xBC, 0xF9, 0xEF,
0x8F, 0x78, 0x7F, 0x83, 0xFF, 0x1F, 0xFC, 0xFF, 0xF7, 0x9F, 0xBC, 0x3F, 0xE0, 0xFF, 0x07, 0xF8,
0x3F, 0xC3, 0xE0, 0x3E, 0x07, 0xF0, 0x3F, 0x01, 0xF0, 0xF3, 0xFE, 0x7B, 0xDE, 0x7F, 0x8F, 0xE1,
0xFF, 0x3F, 0xF7, 0xBE, 0xF1, 0xFE, 0x3F, 0xC7, 0x80, 0xF0, 0x3C, 0x1F, 0x83, 0xE0, 0x0F, 0xFE,
0x03, 0xFF, 0x80, 0xFF, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x80, 0xF1, 0xE0, 0x3C, 0x78,
0x0F, 0x1E, 0x07, 0x87, 0x81, 0xE1, 0xE1, 0xF8, 0x78, 0xFC, 0x1F, 0xBE, 0x07, 0xEF, 0x01, 0xF8,
0x00, 0x1E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0x60, 0x1F, 0xF0, 0x7F, 0xC1, 0xFF, 0x07, 0xBC,
0x1E, 0xF0, 0x7B, 0xC3, 0xCF, 0x1F, 0x3C, 0xFC, 0xFF, 0xE3, 0xFF, 0x0F, 0xC0, 0x0E, 0x00, 0x78,
0x00, 0xC0, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xE0, 0x0F, 0x01, 0xF8, 0x0F, 0x80,
0x7C, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7,
0x01, 0xE0, 0xFC, 0x1F, 0x83, 0xE0, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78,
0xF0, 0x78, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x7E,
0xF0, 0x7E, 0xF0, 0x7E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x18, 0xF3, 0xCF, 0x3C, 0xF3,
0xCF, 0x3C, 0xFF, 0xCF, 0xFC, 0xFF, 0xCF, 0x3C, 0xF3, 0xFF, 0x3F, 0xF3, 0xF0, 0x0E, 0x01, 0xE0,
0x1C, 0xF0, 0x7F, 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x87, 0xBC, 0x3D, 0xF1, 0xEF, 0xFF, 0x3F, 0xF8,
0xFF, 0xC0, 0x1E, 0x00, 0xF0, 0x3F, 0x81, 0xFC, 0x0F, 0xE0, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0,
0x71, 0xEE, 0x3D, 0xC7, 0xBC, 0xF7, 0xFE, 0xFF, 0xCF, 0xF8, 0x0F, 0x01, 0xE0, 0xFC, 0x1F, 0x83,
0x80, 0x70, 0x0E, 0x00, 0x78, 0x0F, 0x0F, 0x83, 0xE1, 0xF0, 0x7C, 0x3F, 0x1F, 0x87, 0xE3, 0xF1,
0xFC, 0x7E, 0x3F, 0xDF, 0xC7, 0xBB, 0xBC, 0xF7, 0xF7, 0x9E, 0xFC, 0xF3, 0xCF, 0x9E, 0x79, 0xF3,
0xCF, 0x1C, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xF8, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00,
0x06, 0x00, 0xF0, 0x78, 0xF8, 0x78, 0xF8, 0xF8, 0xFC, 0xF8, 0xFD, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC,
0xFF, 0xBC, 0xF7, 0xBF, 0xF7, 0x3F, 0xE0, 0x3E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0C, 0x60, 0x1D, 0xC0, 0x3F, 0x80, 0x3E, 0x00, 0x00, 0x00,
0xF8, 0x01, 0xF0, 0x03, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x7B, 0xC0, 0xF7, 0x81, 0xC7, 0x87, 0x8F,
0x0F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0xF0, 0x7B, 0xC0, 0x7F, 0x80, 0xF0, 0x19, 0x87, 0x78, 0xFE,
0x0F, 0x80, 0x00, 0x00, 0x0F, 0xE1, 0xFE, 0x3F, 0xC6, 0x7C, 0xFF, 0xBF, 0xF7, 0x9F, 0xF3, 0xDF,
0xFB, 0xFF, 0x3F, 0xC0, 0x1E, 0xE0, 0x3D, 0xE0, 0x7B, 0x80, 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01,
0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x3D, 0xE0, 0x7B, 0xC0, 0xE3, 0xC3, 0xC7, 0x87, 0xFF, 0x1F, 0xFF,
0x3F, 0xFE, 0x78, 0x3D, 0xE0, 0x3F, 0xC0, 0x78, 0x3B, 0xCF, 0x78, 0xEF, 0x00, 0x00, 0x00, 0x7F,
0x0F, 0xF1, 0xFE, 0x33, 0xE7, 0xFD, 0xFF, 0xBC, 0xFF, 0x9E, 0xFF, 0xDF, 0xF9, 0xFE, 0x00, 0xFF,
0xF0, 0x07, 0xFF, 0x80, 0x7F, 0xFC, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x03, 0xDE, 0x00, 0x1E, 0xFF,
0x81, 0xE7, 0xFC, 0x0F, 0x3F, 0xE0, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x07, 0xC3, 0xFF,
0xBC, 0x1F, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xF8, 0xCF, 0x9F, 0x3F,
0xFF, 0xDF, 0xFF, 0xF7, 0x9E, 0x03, 0xE7, 0xC6, 0x7F, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x39,
0x87, 0x78, 0xFE, 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1E, 0x03, 0xC0, 0x7F, 0xEF,
0xFD, 0xFF, 0xBC, 0x07, 0x80, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xF0, 0x18, 0xC3, 0xDC, 0x1F, 0xC0,
0xF8, 0x00, 0x00, 0x00, 0x1F, 0x83, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0x07, 0xC6,
0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0x3F, 0xC1, 0xFF, 0x87, 0xFF, 0x1C, 0x7E, 0x00, 0x78, 0x01, 0xEF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xEF, 0x07, 0xBF, 0x7E, 0x7F, 0xF0, 0xFF, 0x81, 0xFC, 0x00,
0x7F, 0x87, 0xFC, 0x7F, 0xE3, 0x3E, 0x00, 0xF7, 0xFF, 0x7F, 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x1F,
0x80, 0x3D, 0xC0, 0xF7, 0x83, 0xDC, 0x00, 0x00, 0x3F, 0xC1, 0xFF, 0x87, 0xFF, 0x1C, 0x7E, 0x00,
0x78, 0x01, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xEF, 0x07, 0xBF, 0x7E, 0x7F, 0xF0, 0xFF,
0x81, 0xFC, 0x00, 0x39, 0xC3, 0xFC, 0x39, 0xC0, 0x00, 0x00, 0x07, 0xF8, 0x7F, 0xC7, 0xFE, 0x33,
0xE0, 0x0F, 0x7F, 0xF7, 0xFF, 0x79, 0xE7, 0xFE, 0x3F, 0xC1, 0xF8, 0x03, 0xDC, 0x00, 0x1E, 0xF0,
0x00, 0xF7, 0x00, 0x00, 0x00, 0x0F, 0x8F, 0x0F, 0x3E, 0x78, 0xF8, 0xF3, 0xCF, 0x87, 0xDE, 0xF8,
0x1F, 0xF7, 0xC0, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0xC0,
0x7F, 0xDF, 0x07, 0xDE, 0x7C, 0x7C, 0xF1, 0xE3, 0xC7, 0x8F, 0xBE, 0x3C, 0x3E, 0x07, 0x38, 0x01,
0xFE, 0x00, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x79, 0xE7, 0xDE, 0xF8, 0xF7, 0xFC, 0x1F,
0xFE, 0x07, 0xFF, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x7B, 0xC7, 0x9E, 0x7B, 0xE7,
0x9F, 0x39, 0xC3, 0xBC, 0x39, 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x7F, 0xE7, 0xFE, 0x31, 0xF0, 0x1F,
0x03, 0xE1, 0xFE, 0x1F, 0xE1, 0xFF, 0x01, 0xF0, 0x0F, 0x71, 0xF7, 0xFF, 0xFF, 0xE7, 0xFC, 0x73,
0x9D, 0xE7, 0x38, 0x00, 0x00, 0x1F, 0xC7, 0xF9, 0xFF, 0x67, 0xCF, 0xE3, 0xF8, 0x0F, 0x63, 0xDF,
0xFF, 0xF9, 0xFC, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0xC1, 0xFE, 0x03,
0xF0, 0x0F, 0x00, 0xF7, 0x1F, 0xFF, 0xFF, 0xFE, 0x7F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFC, 0x1E, 0x0F,
0x07, 0x83, 0xF0, 0xFE, 0x07, 0xC0, 0xF0, 0x3F, 0x9F, 0xFF, 0xFF, 0xEF, 0xF0, 0x0F, 0xE0, 0x3F,
0x80, 0x00, 0x3C, 0x0F, 0xF0, 0x7F, 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0xF3, 0xFF, 0xDE, 0xFF, 0x7B,
0xFF, 0xCF, 0xFE, 0x3F, 0xF8, 0xFF, 0xC3, 0xFE, 0x0F, 0xF8, 0x3F, 0xC0, 0xF0, 0x3F, 0x87, 0xF0,
0x00, 0x00, 0x0F, 0x1F, 0xE7, 0xFD, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x9F, 0xF3,
0xFC, 0x78, 0x1C, 0xE0, 0x7B, 0x81, 0xCE, 0x00, 0x00, 0xF0, 0x3F, 0xC1, 0xFF, 0x0F, 0xFC, 0x7F,
0xF1, 0xFF, 0xCF, 0xFF, 0x7B, 0xFD, 0xEF, 0xFF, 0x3F, 0xF8, 0xFF, 0xE3, 0xFF, 0x0F, 0xF8, 0x3F,
0xE0, 0xFF, 0x03, 0xC0, 0x3B, 0xCF, 0x78, 0xEF, 0x00, 0x00, 0x01, 0xE3, 0xFC, 0xFF, 0xBF, 0xF7,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xF3, 0xFE, 0x7F, 0x8F, 0x1E, 0xE0, 0x3D, 0xE0, 0x7B, 0x80,
0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0xFE, 0x3E, 0x7E, 0xF8, 0x3D, 0xE0, 0x7F, 0xC0, 0x7F, 0x80,
0xFF, 0x01, 0xFE, 0x07, 0xFE, 0x0F, 0x3E, 0x7E, 0x7F, 0xF8, 0x7F, 0xF0, 0x3F, 0x80, 0x3D, 0xC3,
0xDE, 0x3D, 0xC0, 0x00, 0x00, 0x01, 0xFC, 0x3F, 0xE7, 0xFE, 0x7D, 0xF7, 0x8F, 0x78, 0xF7, 0x8F,
0x7D, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7F, 0xE1, 0xFF, 0xE3, 0xE7, 0xEF, 0x83, 0xDE,
0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xE0, 0xF3, 0xE7, 0xE7, 0xFF, 0x87, 0xFF,
0x03, 0xF8, 0x00, 0x1F, 0xC3, 0xFE, 0x7F, 0xE7, 0x9F, 0x7F, 0xF7, 0xFF, 0x78, 0xF7, 0xDF, 0x7F,
0xE3, 0xFE, 0x1F, 0xC0, 0x1E, 0xE0, 0x3D, 0xE0, 0x7B, 0x80, 0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F,
0xFE, 0x3E, 0x7E, 0xF8, 0x3D, 0xE0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFE, 0x07, 0xFE, 0x0F,
0x3E, 0x7E, 0x7F, 0xF8, 0x7F, 0xF0, 0x3F, 0x80, 0x3D, 0xC3, 0xDE, 0x3D, 0xC0, 0x00, 0x00, 0x01,
0xFC, 0x3F, 0xE7, 0xFE, 0x79, 0xF7, 0xFF, 0x7F, 0xF7, 0x8F, 0x7D, 0xF7, 0xFE, 0x3F, 0xE1, 0xFC,
0x1D, 0xC0, 0xF7, 0x81, 0xDC, 0x00, 0x00, 0x3F, 0xC1, 0xFF, 0x87, 0xFF, 0x1C, 0x7E, 0x00, 0x78,
0x01, 0xE1, 0xFF, 0xC7, 0xFF, 0x1F, 0xFC, 0x01, 0xE0, 0x07, 0x9C, 0x7E, 0x7F, 0xF1, 0xFF, 0x83,
0xFC, 0x00, 0x73, 0x8F, 0x71, 0xCE, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0xE3, 0xFE, 0x63, 0xC7, 0xF8,
0xFF, 0x81, 0xE6, 0x7C, 0xFF, 0xBF, 0xE7, 0xF8, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0x3E, 0x1F, 0x78,
0x79, 0xF1, 0xE3, 0xC7, 0x8F, 0x3C, 0x1E, 0xF0, 0x7B, 0x80, 0xFE, 0x03, 0xF8, 0x07, 0xC0, 0x1F,
0x04, 0xF8, 0x1F, 0xE0, 0x7F, 0x01, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 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, 0x1C, 0xE0, 0x7B, 0x81, 0xCE, 0x00, 0x00, 0xF8, 0x7D, 0xE1, 0xE7,
0xC7, 0x8F, 0x1E, 0x3C, 0xF0, 0x7B, 0xC1, 0xEE, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0x00, 0x7C, 0x13,
0xE0, 0x7F, 0x81, 0xFC, 0x07, 0xE0, 0x00, 0x3B, 0xC7, 0xBC, 0x3B, 0xC0, 0x00, 0x00, 0x0F, 0x0F,
0xF1, 0xE7, 0x9E, 0x79, 0xE7, 0xBC, 0x3F, 0xC3, 0xF8, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0xF0, 0x1E,
0x0F, 0xE0, 0xFC, 0x0F, 0x80, 0x07, 0x70, 0x1D, 0xC0, 0xEE, 0x07, 0x38, 0x0C, 0xC0, 0x00, 0x0F,
0x87, 0xDE, 0x1E, 0x7C, 0x78, 0xF1, 0xE3, 0xCF, 0x07, 0xBC, 0x1E, 0xE0, 0x3F, 0x80, 0xFE, 0x01,
0xF0, 0x07, 0xC1, 0x3E, 0x07, 0xF8, 0x1F, 0xC0, 0x7E, 0x00, 0x0C, 0xC1, 0xDE, 0x1D, 0xC3, 0xB8,
0x33, 0x80, 0x00, 0xF0, 0xFF, 0x1E, 0x79, 0xE7, 0x9E, 0x7B, 0xC3, 0xFC, 0x3F, 0x81, 0xF8, 0x1F,
0x81, 0xF0, 0x0F, 0x01, 0xE0, 0xFE, 0x0F, 0xC0, 0xF8, 0x00, 0x1D, 0xE1, 0xEF, 0x07, 0x78, 0x00,
0x0F, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x7B, 0xC3, 0xDF, 0x1E, 0xFF, 0xF3, 0xFF, 0x8F,
0xFC, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x3B, 0xCF, 0x78, 0xEF, 0x00, 0x00, 0x00,
0xE3, 0xDC, 0x7B, 0x8F, 0x71, 0xEF, 0x3D, 0xFF, 0xBF, 0xF3, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0xFF,
0xFF, 0xFF, 0xFF, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F,
0xE1, 0xFC, 0x3F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x0F, 0x07,
0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x3F, 0x03, 0x81, 0xC0, 0xE0, 0x07, 0x38, 0x03, 0xBC, 0x01, 0xCE,
0x00, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xFF, 0xC3, 0xFF,
0xF9, 0xFF, 0xFC, 0xFF, 0x3F, 0x7F, 0x87, 0xBF, 0xC3, 0xDF, 0xE7, 0xEF, 0xFF, 0xE7, 0xFF, 0xF3,
0xFF, 0xE1, 0xE0, 0x0E, 0xF0, 0x3D, 0xE0, 0x3B, 0xC0, 0x00, 0x00, 0x00, 0x1E, 0x03, 0xFC, 0x07,
0xF8, 0x0F, 0xF0, 0x1F, 0xFF, 0x3F, 0xFF, 0x7F, 0xFE, 0xFF, 0x3D, 0xFF, 0xFB, 0xFF, 0xF7, 0xFF,
0xCF, 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, 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,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
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,
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};
static const EpdGlyph ubuntu_10_boldGlyphs[] = {
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 0, 0, 0, 0, 0, 0, 0 }, // U+0000
{ 0, 0, 0, 0, 0, 0, 0 }, // U+0008
{ 0, 0, 5, 0, 0, 0, 0 }, // U+0009
{ 0, 0, 5, 0, 0, 0, 0 }, // U+000D
{ 0, 0, 0, 0, 0, 0, 0 }, // U+001D
{ 0, 0, 5, 0, 0, 0, 0 }, // U+0020
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
{ 4, 15, 6, 1, 15, 8, 0 }, // !
{ 8, 6, 10, 1, 16, 6, 8 }, // "
{ 13, 15, 15, 1, 15, 25, 14 }, // #
{ 11, 19, 12, 0, 16, 27, 39 }, // $
{ 19, 15, 19, 0, 15, 36, 66 }, // %
{ 15, 15, 15, 0, 15, 29, 102 }, // &
{ 4, 6, 5, 1, 16, 3, 131 }, // '
{ 7, 20, 7, 1, 16, 18, 134 }, // (
{ 6, 20, 7, 0, 16, 15, 152 }, // )
{ 10, 8, 11, 0, 15, 10, 167 }, // *
{ 10, 11, 12, 1, 12, 14, 177 }, // +
{ 5, 6, 5, 0, 3, 4, 191 }, // ,
{ 7, 3, 7, 0, 8, 3, 195 }, // -
{ 5, 4, 5, 0, 4, 3, 198 }, // .
{ 11, 20, 9, -1, 16, 28, 201 }, // /
{ 12, 15, 12, 0, 15, 23, 229 }, // 0
{ 8, 15, 12, 1, 15, 15, 252 }, // 1
{ 11, 15, 12, 0, 15, 21, 267 }, // 2
{ 11, 15, 12, 0, 15, 21, 288 }, // 3
{ 12, 15, 12, 0, 15, 23, 309 }, // 4
{ 11, 15, 12, 0, 15, 21, 332 }, // 5
{ 12, 15, 12, 0, 15, 23, 353 }, // 6
{ 12, 15, 12, 0, 15, 23, 376 }, // 7
{ 12, 15, 12, 0, 15, 23, 399 }, // 8
{ 12, 15, 12, 0, 15, 23, 422 }, // 9
{ 5, 11, 5, 0, 11, 7, 445 }, // :
{ 5, 14, 5, 0, 11, 9, 452 }, // ;
{ 10, 11, 12, 1, 12, 14, 461 }, // <
{ 10, 8, 12, 1, 10, 10, 475 }, // =
{ 10, 11, 12, 1, 12, 14, 485 }, // >
{ 10, 16, 10, 0, 16, 20, 499 }, // ?
{ 19, 18, 20, 1, 15, 43, 519 }, // @
{ 15, 15, 15, 0, 15, 29, 562 }, // A
{ 13, 15, 14, 1, 15, 25, 591 }, // B
{ 13, 15, 14, 1, 15, 25, 616 }, // C
{ 14, 15, 15, 1, 15, 27, 641 }, // D
{ 11, 15, 13, 1, 15, 21, 668 }, // E
{ 11, 15, 12, 1, 15, 21, 689 }, // F
{ 13, 15, 15, 1, 15, 25, 710 }, // G
{ 13, 15, 15, 1, 15, 25, 735 }, // H
{ 4, 15, 7, 1, 15, 8, 760 }, // I
{ 10, 15, 11, 0, 15, 19, 768 }, // J
{ 14, 15, 14, 1, 15, 27, 787 }, // K
{ 11, 15, 12, 1, 15, 21, 814 }, // L
{ 17, 15, 19, 1, 15, 32, 835 }, // M
{ 14, 15, 16, 1, 15, 27, 867 }, // N
{ 15, 15, 17, 1, 15, 29, 894 }, // O
{ 12, 15, 14, 1, 15, 23, 923 }, // P
{ 15, 18, 17, 1, 15, 34, 946 }, // Q
{ 13, 15, 14, 1, 15, 25, 980 }, // R
{ 12, 15, 12, 0, 15, 23, 1005 }, // S
{ 13, 15, 13, 0, 15, 25, 1028 }, // T
{ 13, 15, 15, 1, 15, 25, 1053 }, // U
{ 15, 15, 15, 0, 15, 29, 1078 }, // V
{ 20, 15, 20, 0, 15, 38, 1107 }, // W
{ 14, 15, 14, 0, 15, 27, 1145 }, // X
{ 14, 15, 14, 0, 15, 27, 1172 }, // Y
{ 13, 15, 13, 0, 15, 25, 1199 }, // Z
{ 7, 20, 8, 1, 16, 18, 1224 }, // [
{ 11, 20, 9, -1, 16, 28, 1242 }, // <backslash>
{ 6, 20, 8, 0, 16, 15, 1270 }, // ]
{ 12, 9, 12, 0, 15, 14, 1285 }, // ^
{ 11, 3, 11, 0, -1, 5, 1299 }, // _
{ 6, 5, 6, 0, 17, 4, 1304 }, // `
{ 11, 11, 12, 0, 11, 16, 1308 }, // a
{ 11, 16, 13, 1, 16, 22, 1324 }, // b
{ 10, 11, 11, 0, 11, 14, 1346 }, // c
{ 12, 16, 13, 0, 16, 24, 1360 }, // d
{ 12, 11, 12, 0, 11, 17, 1384 }, // e
{ 9, 16, 9, 1, 16, 18, 1401 }, // f
{ 11, 15, 12, 0, 11, 21, 1419 }, // g
{ 10, 16, 12, 1, 16, 20, 1440 }, // h
{ 4, 16, 6, 1, 16, 8, 1460 }, // i
{ 7, 20, 6, -2, 16, 18, 1468 }, // j
{ 11, 16, 12, 1, 16, 22, 1486 }, // k
{ 6, 16, 7, 1, 16, 12, 1508 }, // l
{ 16, 11, 18, 1, 11, 22, 1520 }, // m
{ 10, 11, 12, 1, 11, 14, 1542 }, // n
{ 12, 11, 13, 0, 11, 17, 1556 }, // o
{ 11, 15, 13, 1, 11, 21, 1573 }, // p
{ 12, 15, 13, 0, 11, 23, 1594 }, // q
{ 8, 11, 9, 1, 11, 11, 1617 }, // r
{ 10, 11, 10, 0, 11, 14, 1628 }, // s
{ 8, 14, 9, 1, 14, 14, 1642 }, // t
{ 10, 11, 12, 1, 11, 14, 1656 }, // u
{ 12, 11, 12, 0, 11, 17, 1670 }, // v
{ 17, 11, 16, 0, 11, 24, 1687 }, // w
{ 12, 11, 12, 0, 11, 17, 1711 }, // x
{ 12, 15, 11, 0, 11, 23, 1728 }, // y
{ 10, 11, 11, 0, 11, 14, 1751 }, // z
{ 8, 20, 8, 0, 16, 20, 1765 }, // {
{ 4, 20, 7, 1, 16, 10, 1785 }, // |
{ 8, 20, 8, 0, 16, 20, 1795 }, // }
{ 12, 5, 12, 0, 9, 8, 1815 }, // ~
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 0, 0, 5, 0, 0, 0, 1823 }, // U+00A0
{ 4, 15, 6, 1, 11, 8, 1823 }, // U+00A1
{ 10, 16, 12, 0, 14, 20, 1831 }, // U+00A2
{ 11, 15, 12, 0, 15, 21, 1851 }, // U+00A3
{ 12, 11, 12, 0, 13, 17, 1872 }, // U+00A4
{ 14, 15, 12, -1, 15, 27, 1889 }, // U+00A5
{ 4, 20, 6, 1, 16, 10, 1916 }, // U+00A6
{ 11, 19, 11, 0, 15, 27, 1926 }, // U+00A7
{ 9, 3, 11, 1, 16, 4, 1953 }, // U+00A8
{ 15, 15, 17, 1, 15, 29, 1957 }, // U+00A9
{ 8, 8, 8, 0, 15, 8, 1986 }, // U+00AA
{ 12, 11, 13, 0, 11, 17, 1994 }, // U+00AB
{ 10, 8, 12, 1, 9, 10, 2011 }, // U+00AC
{ 7, 3, 7, 0, 8, 3, 2021 }, // U+00AD
{ 15, 15, 17, 1, 15, 29, 2024 }, // U+00AE
{ 8, 2, 8, 0, 15, 2, 2053 }, // U+00AF
{ 8, 6, 8, 0, 16, 6, 2055 }, // U+00B0
{ 10, 15, 12, 1, 15, 19, 2061 }, // U+00B1
{ 7, 9, 8, 0, 15, 8, 2080 }, // U+00B2
{ 7, 9, 8, 0, 15, 8, 2088 }, // U+00B3
{ 6, 5, 6, 0, 17, 4, 2096 }, // U+00B4
{ 10, 15, 12, 1, 11, 19, 2100 }, // U+00B5
{ 14, 19, 15, 0, 15, 34, 2119 }, // U+00B6
{ 5, 4, 5, 0, 9, 3, 2153 }, // U+00B7
{ 6, 6, 7, 0, 1, 5, 2156 }, // U+00B8
{ 6, 9, 8, 0, 15, 7, 2161 }, // U+00B9
{ 9, 8, 10, 0, 15, 9, 2168 }, // U+00BA
{ 13, 11, 13, 0, 11, 18, 2177 }, // U+00BB
{ 19, 15, 18, 0, 15, 36, 2195 }, // U+00BC
{ 18, 15, 18, 0, 15, 34, 2231 }, // U+00BD
{ 19, 15, 18, 0, 15, 36, 2265 }, // U+00BE
{ 10, 15, 10, 0, 11, 19, 2301 }, // U+00BF
{ 15, 21, 15, 0, 21, 40, 2320 }, // U+00C0
{ 15, 21, 15, 0, 21, 40, 2360 }, // U+00C1
{ 15, 21, 15, 0, 21, 40, 2400 }, // U+00C2
{ 15, 19, 15, 0, 19, 36, 2440 }, // U+00C3
{ 15, 19, 15, 0, 19, 36, 2476 }, // U+00C4
{ 15, 19, 15, 0, 19, 36, 2512 }, // U+00C5
{ 21, 15, 21, 0, 15, 40, 2548 }, // U+00C6
{ 13, 20, 14, 1, 15, 33, 2588 }, // U+00C7
{ 11, 21, 13, 1, 21, 29, 2621 }, // U+00C8
{ 11, 21, 13, 1, 21, 29, 2650 }, // U+00C9
{ 11, 21, 13, 1, 21, 29, 2679 }, // U+00CA
{ 11, 19, 13, 1, 19, 27, 2708 }, // U+00CB
{ 6, 21, 7, 0, 21, 16, 2735 }, // U+00CC
{ 5, 21, 7, 1, 21, 14, 2751 }, // U+00CD
{ 7, 21, 7, 0, 21, 19, 2765 }, // U+00CE
{ 9, 19, 7, -1, 19, 22, 2784 }, // U+00CF
{ 15, 15, 16, 0, 15, 29, 2806 }, // U+00D0
{ 14, 19, 16, 1, 19, 34, 2835 }, // U+00D1
{ 15, 21, 17, 1, 21, 40, 2869 }, // U+00D2
{ 15, 21, 17, 1, 21, 40, 2909 }, // U+00D3
{ 15, 21, 17, 1, 21, 40, 2949 }, // U+00D4
{ 15, 19, 17, 1, 19, 36, 2989 }, // U+00D5
{ 15, 19, 17, 1, 19, 36, 3025 }, // U+00D6
{ 10, 9, 12, 1, 11, 12, 3061 }, // U+00D7
{ 15, 17, 17, 1, 16, 32, 3073 }, // U+00D8
{ 13, 21, 15, 1, 21, 35, 3105 }, // U+00D9
{ 13, 21, 15, 1, 21, 35, 3140 }, // U+00DA
{ 13, 21, 15, 1, 21, 35, 3175 }, // U+00DB
{ 13, 19, 15, 1, 19, 31, 3210 }, // U+00DC
{ 14, 21, 14, 0, 21, 37, 3241 }, // U+00DD
{ 12, 15, 14, 1, 15, 23, 3278 }, // U+00DE
{ 13, 16, 14, 1, 16, 26, 3301 }, // U+00DF
{ 11, 17, 12, 0, 17, 24, 3327 }, // U+00E0
{ 11, 17, 12, 0, 17, 24, 3351 }, // U+00E1
{ 11, 17, 12, 0, 17, 24, 3375 }, // U+00E2
{ 11, 16, 12, 0, 16, 22, 3399 }, // U+00E3
{ 11, 16, 12, 0, 16, 22, 3421 }, // U+00E4
{ 11, 18, 12, 0, 18, 25, 3443 }, // U+00E5
{ 18, 11, 18, 0, 11, 25, 3468 }, // U+00E6
{ 10, 15, 11, 0, 11, 19, 3493 }, // U+00E7
{ 12, 17, 12, 0, 17, 26, 3512 }, // U+00E8
{ 12, 17, 12, 0, 17, 26, 3538 }, // U+00E9
{ 12, 17, 12, 0, 17, 26, 3564 }, // U+00EA
{ 12, 16, 12, 0, 16, 24, 3590 }, // U+00EB
{ 6, 17, 6, 0, 17, 13, 3614 }, // U+00EC
{ 6, 17, 6, 0, 17, 13, 3627 }, // U+00ED
{ 8, 17, 6, -1, 17, 17, 3640 }, // U+00EE
{ 9, 16, 6, -2, 16, 18, 3657 }, // U+00EF
{ 13, 16, 13, 0, 16, 26, 3675 }, // U+00F0
{ 10, 16, 12, 1, 16, 20, 3701 }, // U+00F1
{ 12, 17, 13, 0, 17, 26, 3721 }, // U+00F2
{ 12, 17, 13, 0, 17, 26, 3747 }, // U+00F3
{ 12, 17, 13, 0, 17, 26, 3773 }, // U+00F4
{ 12, 16, 13, 0, 16, 24, 3799 }, // U+00F5
{ 12, 16, 13, 0, 16, 24, 3823 }, // U+00F6
{ 10, 13, 12, 1, 13, 17, 3847 }, // U+00F7
{ 12, 13, 13, 0, 12, 20, 3864 }, // U+00F8
{ 10, 17, 12, 1, 17, 22, 3884 }, // U+00F9
{ 10, 17, 12, 1, 17, 22, 3906 }, // U+00FA
{ 10, 17, 12, 1, 17, 22, 3928 }, // U+00FB
{ 10, 16, 12, 1, 16, 20, 3950 }, // U+00FC
{ 12, 21, 11, 0, 17, 32, 3970 }, // U+00FD
{ 11, 20, 13, 1, 16, 28, 4002 }, // U+00FE
{ 12, 20, 11, 0, 16, 30, 4030 }, // U+00FF
{ 15, 18, 15, 0, 18, 34, 4060 }, // U+0100
{ 11, 15, 12, 0, 15, 21, 4094 }, // U+0101
{ 15, 19, 15, 0, 19, 36, 4115 }, // U+0102
{ 11, 16, 12, 0, 16, 22, 4151 }, // U+0103
{ 16, 20, 15, 0, 15, 40, 4173 }, // U+0104
{ 11, 15, 12, 0, 11, 21, 4213 }, // U+0105
{ 13, 21, 14, 1, 21, 35, 4234 }, // U+0106
{ 10, 17, 11, 0, 17, 22, 4269 }, // U+0107
{ 13, 21, 14, 1, 21, 35, 4291 }, // U+0108
{ 10, 17, 11, 0, 17, 22, 4326 }, // U+0109
{ 13, 19, 14, 1, 19, 31, 4348 }, // U+010A
{ 10, 16, 11, 0, 16, 20, 4379 }, // U+010B
{ 13, 21, 14, 1, 21, 35, 4399 }, // U+010C
{ 10, 17, 11, 0, 17, 22, 4434 }, // U+010D
{ 14, 21, 15, 1, 21, 37, 4456 }, // U+010E
{ 16, 16, 14, 0, 16, 32, 4493 }, // U+010F
{ 15, 15, 16, 0, 15, 29, 4525 }, // U+0110
{ 13, 16, 13, 0, 16, 26, 4554 }, // U+0111
{ 11, 18, 13, 1, 18, 25, 4580 }, // U+0112
{ 12, 15, 12, 0, 15, 23, 4605 }, // U+0113
{ 11, 19, 13, 1, 19, 27, 4628 }, // U+0114
{ 12, 16, 12, 0, 16, 24, 4655 }, // U+0115
{ 11, 19, 13, 1, 19, 27, 4679 }, // U+0116
{ 12, 16, 12, 0, 16, 24, 4706 }, // U+0117
{ 12, 20, 13, 1, 15, 30, 4730 }, // U+0118
{ 12, 15, 12, 0, 11, 23, 4760 }, // U+0119
{ 11, 21, 13, 1, 21, 29, 4783 }, // U+011A
{ 12, 17, 12, 0, 17, 26, 4812 }, // U+011B
{ 13, 21, 15, 1, 21, 35, 4838 }, // U+011C
{ 11, 21, 12, 0, 17, 29, 4873 }, // U+011D
{ 13, 19, 15, 1, 19, 31, 4902 }, // U+011E
{ 11, 20, 12, 0, 16, 28, 4933 }, // U+011F
{ 13, 19, 15, 1, 19, 31, 4961 }, // U+0120
{ 11, 20, 12, 0, 16, 28, 4992 }, // U+0121
{ 13, 20, 15, 1, 15, 33, 5020 }, // U+0122
{ 11, 21, 12, 0, 17, 29, 5053 }, // U+0123
{ 13, 21, 15, 1, 21, 35, 5082 }, // U+0124
{ 10, 20, 12, 1, 20, 25, 5117 }, // U+0125
{ 16, 15, 16, 0, 15, 30, 5142 }, // U+0126
{ 12, 16, 13, 0, 16, 24, 5172 }, // U+0127
{ 9, 19, 7, -1, 19, 22, 5196 }, // U+0128
{ 8, 16, 6, -1, 16, 16, 5218 }, // U+0129
{ 8, 18, 7, -1, 18, 18, 5234 }, // U+012A
{ 8, 15, 6, -1, 15, 15, 5252 }, // U+012B
{ 7, 19, 7, 0, 19, 17, 5267 }, // U+012C
{ 8, 16, 6, -1, 16, 16, 5284 }, // U+012D
{ 6, 20, 7, 0, 15, 15, 5300 }, // U+012E
{ 6, 21, 6, 0, 16, 16, 5315 }, // U+012F
{ 4, 19, 7, 1, 19, 10, 5331 }, // U+0130
{ 4, 11, 6, 1, 11, 6, 5341 }, // U+0131
{ 16, 15, 18, 1, 15, 30, 5347 }, // U+0132
{ 10, 20, 12, 1, 16, 25, 5377 }, // U+0133
{ 12, 21, 11, 0, 21, 32, 5402 }, // U+0134
{ 9, 21, 6, -2, 17, 24, 5434 }, // U+0135
{ 14, 20, 14, 1, 15, 35, 5458 }, // U+0136
{ 11, 21, 12, 1, 16, 29, 5493 }, // U+0137
{ 12, 11, 12, 1, 11, 17, 5522 }, // U+0138
{ 11, 21, 12, 1, 21, 29, 5539 }, // U+0139
{ 6, 21, 7, 1, 21, 16, 5568 }, // U+013A
{ 11, 20, 12, 1, 15, 28, 5584 }, // U+013B
{ 6, 21, 7, 1, 16, 16, 5612 }, // U+013C
{ 11, 15, 12, 1, 15, 21, 5628 }, // U+013D
{ 8, 16, 8, 1, 16, 16, 5649 }, // U+013E
{ 11, 15, 12, 1, 15, 21, 5665 }, // U+013F
{ 10, 16, 11, 1, 16, 20, 5686 }, // U+0140
{ 13, 15, 12, 0, 15, 25, 5706 }, // U+0141
{ 9, 16, 8, -1, 16, 18, 5731 }, // U+0142
{ 14, 21, 16, 1, 21, 37, 5749 }, // U+0143
{ 10, 17, 12, 1, 17, 22, 5786 }, // U+0144
{ 14, 20, 16, 1, 15, 35, 5808 }, // U+0145
{ 10, 16, 12, 1, 11, 20, 5843 }, // U+0146
{ 14, 21, 16, 1, 21, 37, 5863 }, // U+0147
{ 10, 17, 12, 1, 17, 22, 5900 }, // U+0148
{ 13, 16, 13, -1, 16, 26, 5922 }, // U+0149
{ 14, 19, 16, 1, 15, 34, 5948 }, // U+014A
{ 10, 15, 12, 1, 11, 19, 5982 }, // U+014B
{ 15, 18, 17, 1, 18, 34, 6001 }, // U+014C
{ 12, 15, 13, 0, 15, 23, 6035 }, // U+014D
{ 15, 19, 17, 1, 19, 36, 6058 }, // U+014E
{ 12, 16, 13, 0, 16, 24, 6094 }, // U+014F
{ 15, 21, 17, 1, 21, 40, 6118 }, // U+0150
{ 12, 17, 13, 0, 17, 26, 6158 }, // U+0151
{ 20, 15, 21, 1, 15, 38, 6184 }, // U+0152
{ 19, 11, 20, 0, 11, 27, 6222 }, // U+0153
{ 13, 21, 14, 1, 21, 35, 6249 }, // U+0154
{ 8, 17, 9, 1, 17, 17, 6284 }, // U+0155
{ 13, 20, 14, 1, 15, 33, 6301 }, // U+0156
{ 9, 16, 9, 0, 11, 18, 6334 }, // U+0157
{ 13, 20, 14, 1, 20, 33, 6352 }, // U+0158
{ 8, 17, 9, 1, 17, 17, 6385 }, // U+0159
{ 12, 21, 12, 0, 21, 32, 6402 }, // U+015A
{ 10, 17, 10, 0, 17, 22, 6434 }, // U+015B
{ 12, 21, 12, 0, 21, 32, 6456 }, // U+015C
{ 10, 17, 10, 0, 17, 22, 6488 }, // U+015D
{ 12, 20, 12, 0, 15, 30, 6510 }, // U+015E
{ 10, 16, 10, 0, 11, 20, 6540 }, // U+015F
{ 12, 21, 12, 0, 21, 32, 6560 }, // U+0160
{ 10, 17, 10, 0, 17, 22, 6592 }, // U+0161
{ 13, 19, 13, 0, 15, 31, 6614 }, // U+0162
{ 8, 18, 9, 1, 14, 18, 6645 }, // U+0163
{ 13, 21, 13, 0, 21, 35, 6663 }, // U+0164
{ 8, 16, 9, 1, 16, 16, 6698 }, // U+0165
{ 13, 15, 13, 0, 15, 25, 6714 }, // U+0166
{ 8, 14, 9, 1, 14, 14, 6739 }, // U+0167
{ 13, 19, 15, 1, 19, 31, 6753 }, // U+0168
{ 10, 16, 12, 1, 16, 20, 6784 }, // U+0169
{ 13, 18, 15, 1, 18, 30, 6804 }, // U+016A
{ 10, 15, 12, 1, 15, 19, 6834 }, // U+016B
{ 13, 19, 15, 1, 19, 31, 6853 }, // U+016C
{ 10, 16, 12, 1, 16, 20, 6884 }, // U+016D
{ 13, 21, 15, 1, 21, 35, 6904 }, // U+016E
{ 10, 18, 12, 1, 18, 23, 6939 }, // U+016F
{ 13, 21, 15, 1, 21, 35, 6962 }, // U+0170
{ 11, 17, 12, 1, 17, 24, 6997 }, // U+0171
{ 13, 19, 15, 1, 15, 31, 7021 }, // U+0172
{ 10, 15, 12, 1, 11, 19, 7052 }, // U+0173
{ 20, 21, 20, 0, 21, 53, 7071 }, // U+0174
{ 17, 17, 16, 0, 17, 37, 7124 }, // U+0175
{ 14, 21, 14, 0, 21, 37, 7161 }, // U+0176
{ 12, 21, 11, 0, 17, 32, 7198 }, // U+0177
{ 14, 19, 14, 0, 19, 34, 7230 }, // U+0178
{ 13, 21, 13, 0, 21, 35, 7264 }, // U+0179
{ 10, 17, 11, 0, 17, 22, 7299 }, // U+017A
{ 13, 19, 13, 0, 19, 31, 7321 }, // U+017B
{ 10, 16, 11, 0, 16, 20, 7352 }, // U+017C
{ 13, 21, 13, 0, 21, 35, 7372 }, // U+017D
{ 10, 17, 11, 0, 17, 22, 7407 }, // U+017E
{ 9, 16, 7, 1, 16, 18, 7429 }, // U+017F
{ 8, 3, 8, 0, 15, 3, 7447 }, // U+0311
{ 11, 21, 13, 1, 21, 29, 7450 }, // U+0400
{ 11, 20, 13, 1, 20, 28, 7479 }, // U+0401
{ 17, 15, 17, 0, 15, 32, 7507 }, // U+0402
{ 11, 21, 12, 1, 21, 29, 7539 }, // U+0403
{ 13, 15, 14, 1, 15, 25, 7568 }, // U+0404
{ 12, 15, 12, 0, 15, 23, 7593 }, // U+0405
{ 4, 15, 7, 1, 15, 8, 7616 }, // U+0406
{ 9, 19, 7, -1, 19, 22, 7624 }, // U+0407
{ 10, 15, 11, 0, 15, 19, 7646 }, // U+0408
{ 23, 15, 24, 0, 15, 44, 7665 }, // U+0409
{ 21, 15, 23, 1, 15, 40, 7709 }, // U+040A
{ 16, 15, 16, 0, 15, 30, 7749 }, // U+040B
{ 14, 21, 14, 1, 21, 37, 7779 }, // U+040C
{ 14, 21, 16, 1, 21, 37, 7816 }, // U+040D
{ 14, 20, 14, 0, 20, 35, 7853 }, // U+040E
{ 13, 19, 15, 1, 15, 31, 7888 }, // U+040F
{ 15, 15, 15, 0, 15, 29, 7919 }, // U+0410
{ 12, 15, 14, 1, 15, 23, 7948 }, // U+0411
{ 13, 15, 14, 1, 15, 25, 7971 }, // U+0412
{ 11, 15, 12, 1, 15, 21, 7996 }, // U+0413
{ 17, 19, 17, 0, 15, 41, 8017 }, // U+0414
{ 11, 15, 13, 1, 15, 21, 8058 }, // U+0415
{ 21, 15, 21, 0, 15, 40, 8079 }, // U+0416
{ 12, 15, 13, 0, 15, 23, 8119 }, // U+0417
{ 14, 15, 16, 1, 15, 27, 8142 }, // U+0418
{ 14, 20, 16, 1, 20, 35, 8169 }, // U+0419
{ 14, 15, 14, 1, 15, 27, 8204 }, // U+041A
{ 15, 15, 17, 0, 15, 29, 8231 }, // U+041B
{ 17, 15, 19, 1, 15, 32, 8260 }, // U+041C
{ 13, 15, 15, 1, 15, 25, 8292 }, // U+041D
{ 15, 15, 17, 1, 15, 29, 8317 }, // U+041E
{ 13, 15, 15, 1, 15, 25, 8346 }, // U+041F
{ 12, 15, 14, 1, 15, 23, 8371 }, // U+0420
{ 13, 15, 14, 1, 15, 25, 8394 }, // U+0421
{ 13, 15, 13, 0, 15, 25, 8419 }, // U+0422
{ 14, 15, 14, 0, 15, 27, 8444 }, // U+0423
{ 18, 16, 18, 0, 16, 36, 8471 }, // U+0424
{ 14, 15, 14, 0, 15, 27, 8507 }, // U+0425
{ 16, 19, 17, 1, 15, 38, 8534 }, // U+0426
{ 13, 15, 14, 0, 15, 25, 8572 }, // U+0427
{ 19, 15, 21, 1, 15, 36, 8597 }, // U+0428
{ 22, 19, 23, 1, 15, 53, 8633 }, // U+0429
{ 16, 15, 16, 0, 15, 30, 8686 }, // U+042A
{ 17, 15, 19, 1, 15, 32, 8716 }, // U+042B
{ 12, 15, 14, 1, 15, 23, 8748 }, // U+042C
{ 14, 15, 14, 0, 15, 27, 8771 }, // U+042D
{ 21, 15, 23, 1, 15, 40, 8798 }, // U+042E
{ 13, 15, 14, 0, 15, 25, 8838 }, // U+042F
{ 11, 11, 12, 0, 11, 16, 8863 }, // U+0430
{ 12, 16, 13, 0, 16, 24, 8879 }, // U+0431
{ 11, 11, 13, 1, 11, 16, 8903 }, // U+0432
{ 9, 11, 10, 1, 11, 13, 8919 }, // U+0433
{ 14, 14, 14, 0, 11, 25, 8932 }, // U+0434
{ 12, 11, 12, 0, 11, 17, 8957 }, // U+0435
{ 18, 11, 18, 0, 11, 25, 8974 }, // U+0436
{ 10, 11, 10, 0, 11, 14, 8999 }, // U+0437
{ 11, 11, 13, 1, 11, 16, 9013 }, // U+0438
{ 11, 17, 13, 1, 17, 24, 9029 }, // U+0439
{ 12, 11, 12, 1, 11, 17, 9053 }, // U+043A
{ 12, 11, 13, 0, 11, 17, 9070 }, // U+043B
{ 14, 11, 16, 1, 11, 20, 9087 }, // U+043C
{ 10, 11, 12, 1, 11, 14, 9107 }, // U+043D
{ 12, 11, 13, 0, 11, 17, 9121 }, // U+043E
{ 10, 11, 12, 1, 11, 14, 9138 }, // U+043F
{ 11, 15, 13, 1, 11, 21, 9152 }, // U+0440
{ 10, 11, 11, 0, 11, 14, 9173 }, // U+0441
{ 11, 11, 11, 0, 11, 16, 9187 }, // U+0442
{ 12, 15, 11, 0, 11, 23, 9203 }, // U+0443
{ 16, 20, 17, 0, 16, 40, 9226 }, // U+0444
{ 12, 11, 12, 0, 11, 17, 9266 }, // U+0445
{ 12, 14, 13, 1, 11, 21, 9283 }, // U+0446
{ 11, 11, 12, 0, 11, 16, 9304 }, // U+0447
{ 16, 11, 18, 1, 11, 22, 9320 }, // U+0448
{ 18, 14, 19, 1, 11, 32, 9342 }, // U+0449
{ 13, 11, 13, 0, 11, 18, 9374 }, // U+044A
{ 15, 11, 17, 1, 11, 21, 9392 }, // U+044B
{ 11, 11, 12, 1, 11, 16, 9413 }, // U+044C
{ 11, 11, 11, 0, 11, 16, 9429 }, // U+044D
{ 17, 11, 18, 1, 11, 24, 9445 }, // U+044E
{ 11, 11, 12, 0, 11, 16, 9469 }, // U+044F
{ 12, 17, 12, 0, 17, 26, 9485 }, // U+0450
{ 12, 16, 12, 0, 16, 24, 9511 }, // U+0451
{ 12, 20, 13, 0, 16, 30, 9535 }, // U+0452
{ 9, 17, 10, 1, 17, 20, 9565 }, // U+0453
{ 11, 11, 11, 0, 11, 16, 9585 }, // U+0454
{ 10, 11, 10, 0, 11, 14, 9601 }, // U+0455
{ 4, 16, 6, 1, 16, 8, 9615 }, // U+0456
{ 9, 16, 6, -2, 16, 18, 9623 }, // U+0457
{ 7, 20, 6, -2, 16, 18, 9641 }, // U+0458
{ 19, 11, 19, 0, 11, 27, 9659 }, // U+0459
{ 17, 11, 18, 1, 11, 24, 9686 }, // U+045A
{ 12, 16, 13, 0, 16, 24, 9710 }, // U+045B
{ 12, 17, 12, 1, 17, 26, 9734 }, // U+045C
{ 11, 17, 13, 1, 17, 24, 9760 }, // U+045D
{ 12, 21, 11, 0, 17, 32, 9784 }, // U+045E
{ 10, 14, 12, 1, 11, 18, 9816 }, // U+045F
{ 15, 16, 16, 0, 16, 30, 9834 }, // U+0462
{ 13, 16, 13, 0, 16, 26, 9864 }, // U+0463
{ 15, 15, 17, 1, 15, 29, 9890 }, // U+0472
{ 12, 11, 13, 0, 11, 17, 9919 }, // U+0473
{ 18, 15, 17, 0, 15, 34, 9936 }, // U+0474
{ 13, 11, 13, 0, 11, 18, 9970 }, // U+0475
{ 16, 23, 17, 1, 19, 46, 9988 }, // U+048A
{ 13, 19, 13, 1, 16, 31, 10034 }, // U+048B
{ 13, 15, 14, 0, 15, 25, 10065 }, // U+048C
{ 12, 11, 12, 0, 11, 17, 10090 }, // U+048D
{ 12, 15, 14, 1, 15, 23, 10107 }, // U+048E
{ 11, 15, 13, 1, 11, 21, 10130 }, // U+048F
{ 11, 18, 12, 1, 18, 25, 10151 }, // U+0490
{ 9, 14, 10, 1, 14, 16, 10176 }, // U+0491
{ 12, 15, 13, 1, 15, 23, 10192 }, // U+0492
{ 10, 11, 11, 1, 11, 14, 10215 }, // U+0493
{ 13, 19, 14, 1, 15, 31, 10229 }, // U+0494
{ 11, 15, 12, 1, 11, 21, 10260 }, // U+0495
{ 22, 19, 21, 0, 15, 53, 10281 }, // U+0496
{ 18, 14, 18, 0, 11, 32, 10334 }, // U+0497
{ 12, 20, 13, 0, 15, 30, 10366 }, // U+0498
{ 10, 16, 10, 0, 11, 20, 10396 }, // U+0499
{ 15, 19, 15, 1, 15, 36, 10416 }, // U+049A
{ 12, 14, 13, 1, 11, 21, 10452 }, // U+049B
{ 16, 15, 16, 1, 15, 30, 10473 }, // U+049C
{ 14, 11, 14, 1, 11, 20, 10503 }, // U+049D
{ 15, 16, 15, 0, 16, 30, 10523 }, // U+049E
{ 13, 12, 13, 0, 12, 20, 10553 }, // U+049F
{ 17, 15, 17, 0, 15, 32, 10573 }, // U+04A0
{ 14, 11, 14, 0, 11, 20, 10605 }, // U+04A1
{ 16, 19, 17, 1, 15, 38, 10625 }, // U+04A2
{ 12, 14, 13, 1, 11, 21, 10663 }, // U+04A3
{ 17, 15, 18, 1, 15, 32, 10684 }, // U+04A4
{ 13, 11, 14, 1, 11, 18, 10716 }, // U+04A5
{ 22, 19, 23, 1, 15, 53, 10734 }, // U+04A6
{ 17, 15, 18, 1, 11, 32, 10787 }, // U+04A7
{ 16, 19, 17, 1, 15, 38, 10819 }, // U+04A8
{ 13, 14, 13, 0, 11, 23, 10857 }, // U+04A9
{ 13, 20, 14, 1, 15, 33, 10880 }, // U+04AA
{ 10, 15, 11, 0, 11, 19, 10913 }, // U+04AB
{ 13, 19, 13, 0, 15, 31, 10932 }, // U+04AC
{ 11, 14, 11, 0, 11, 20, 10963 }, // U+04AD
{ 14, 15, 14, 0, 15, 27, 10983 }, // U+04AE
{ 12, 15, 12, 0, 11, 23, 11010 }, // U+04AF
{ 14, 15, 14, 0, 15, 27, 11033 }, // U+04B0
{ 12, 15, 12, 0, 11, 23, 11060 }, // U+04B1
{ 15, 19, 15, 0, 15, 36, 11083 }, // U+04B2
{ 12, 14, 12, 0, 11, 21, 11119 }, // U+04B3
{ 20, 19, 20, 0, 15, 48, 11140 }, // U+04B4
{ 15, 14, 15, 0, 11, 27, 11188 }, // U+04B5
{ 14, 19, 15, 1, 15, 34, 11215 }, // U+04B6
{ 13, 14, 12, 0, 11, 23, 11249 }, // U+04B7
{ 12, 15, 14, 1, 15, 23, 11272 }, // U+04B8
{ 11, 11, 12, 0, 11, 16, 11295 }, // U+04B9
{ 13, 15, 15, 1, 15, 25, 11311 }, // U+04BA
{ 10, 16, 12, 1, 16, 20, 11336 }, // U+04BB
{ 18, 15, 18, 0, 15, 34, 11356 }, // U+04BC
{ 14, 11, 15, 0, 11, 20, 11390 }, // U+04BD
{ 18, 19, 18, 0, 15, 43, 11410 }, // U+04BE
{ 14, 14, 15, 0, 11, 25, 11453 }, // U+04BF
{ 4, 15, 7, 1, 15, 8, 11478 }, // U+04C0
{ 21, 20, 21, 0, 20, 53, 11486 }, // U+04C1
{ 18, 17, 18, 0, 17, 39, 11539 }, // U+04C2
{ 13, 19, 15, 1, 15, 31, 11578 }, // U+04C3
{ 11, 15, 12, 1, 11, 21, 11609 }, // U+04C4
{ 18, 19, 17, 0, 15, 43, 11630 }, // U+04C5
{ 14, 14, 14, 0, 11, 25, 11673 }, // U+04C6
{ 13, 19, 15, 1, 15, 31, 11698 }, // U+04C7
{ 11, 15, 13, 1, 11, 21, 11729 }, // U+04C8
{ 16, 19, 17, 1, 15, 38, 11750 }, // U+04C9
{ 12, 14, 13, 1, 11, 21, 11788 }, // U+04CA
{ 13, 19, 14, 0, 15, 31, 11809 }, // U+04CB
{ 11, 14, 12, 0, 11, 20, 11840 }, // U+04CC
{ 19, 19, 20, 1, 15, 46, 11860 }, // U+04CD
{ 16, 14, 17, 1, 11, 28, 11906 }, // U+04CE
{ 4, 15, 6, 1, 15, 8, 11934 }, // U+04CF
{ 15, 20, 15, 0, 20, 38, 11942 }, // U+04D0
{ 11, 17, 12, 0, 17, 24, 11980 }, // U+04D1
{ 15, 19, 15, 0, 19, 36, 12004 }, // U+04D2
{ 11, 16, 12, 0, 16, 22, 12040 }, // U+04D3
{ 21, 15, 21, 0, 15, 40, 12062 }, // U+04D4
{ 18, 11, 18, 0, 11, 25, 12102 }, // U+04D5
{ 11, 20, 13, 1, 20, 28, 12127 }, // U+04D6
{ 12, 17, 12, 0, 17, 26, 12155 }, // U+04D7
{ 14, 15, 15, 1, 15, 27, 12181 }, // U+04D8
{ 12, 11, 12, 0, 11, 17, 12208 }, // U+04D9
{ 14, 19, 15, 1, 19, 34, 12225 }, // U+04DA
{ 12, 16, 12, 0, 16, 24, 12259 }, // U+04DB
{ 21, 19, 21, 0, 19, 50, 12283 }, // U+04DC
{ 18, 16, 18, 0, 16, 36, 12333 }, // U+04DD
{ 12, 20, 13, 0, 20, 30, 12369 }, // U+04DE
{ 10, 16, 10, 0, 16, 20, 12399 }, // U+04DF
{ 12, 15, 13, 0, 15, 23, 12419 }, // U+04E0
{ 10, 15, 11, 0, 11, 19, 12442 }, // U+04E1
{ 14, 18, 16, 1, 18, 32, 12461 }, // U+04E2
{ 11, 15, 13, 1, 15, 21, 12493 }, // U+04E3
{ 14, 19, 16, 1, 19, 34, 12514 }, // U+04E4
{ 11, 16, 13, 1, 16, 22, 12548 }, // U+04E5
{ 15, 19, 17, 1, 19, 36, 12570 }, // U+04E6
{ 12, 16, 13, 0, 16, 24, 12606 }, // U+04E7
{ 15, 15, 17, 1, 15, 29, 12630 }, // U+04E8
{ 12, 11, 13, 0, 11, 17, 12659 }, // U+04E9
{ 15, 19, 17, 1, 19, 36, 12676 }, // U+04EA
{ 12, 16, 13, 0, 16, 24, 12712 }, // U+04EB
{ 14, 19, 14, 0, 19, 34, 12736 }, // U+04EC
{ 11, 16, 11, 0, 16, 22, 12770 }, // U+04ED
{ 14, 18, 14, 0, 18, 32, 12792 }, // U+04EE
{ 12, 19, 11, 0, 15, 29, 12824 }, // U+04EF
{ 14, 19, 14, 0, 19, 34, 12853 }, // U+04F0
{ 12, 20, 11, 0, 16, 30, 12887 }, // U+04F1
{ 14, 21, 14, 0, 21, 37, 12917 }, // U+04F2
{ 12, 21, 11, 0, 17, 32, 12954 }, // U+04F3
{ 13, 19, 14, 0, 19, 31, 12986 }, // U+04F4
{ 11, 16, 12, 0, 16, 22, 13017 }, // U+04F5
{ 11, 19, 12, 1, 15, 27, 13039 }, // U+04F6
{ 9, 14, 10, 1, 11, 16, 13066 }, // U+04F7
{ 17, 19, 19, 1, 19, 41, 13082 }, // U+04F8
{ 15, 16, 17, 1, 16, 30, 13123 }, // U+04F9
{ 11, 3, 11, 0, 8, 5, 13153 }, // U+2013
{ 21, 3, 21, 0, 8, 8, 13158 }, // U+2014
{ 21, 3, 21, 0, 8, 8, 13166 }, // U+2015
{ 5, 6, 5, 0, 16, 4, 13174 }, // U+2018
{ 5, 6, 5, 0, 16, 4, 13178 }, // U+2019
{ 5, 6, 5, 0, 3, 4, 13182 }, // U+201A
{ 10, 6, 10, 0, 16, 8, 13186 }, // U+201C
{ 9, 6, 10, 0, 16, 7, 13194 }, // U+201D
{ 9, 6, 10, 0, 3, 7, 13201 }, // U+201E
{ 10, 18, 10, 0, 15, 23, 13208 }, // U+2020
{ 10, 18, 10, 0, 15, 23, 13231 }, // U+2021
{ 7, 6, 8, 0, 10, 6, 13254 }, // U+2022
{ 19, 4, 21, 1, 4, 10, 13260 }, // U+2026
{ 27, 15, 28, 0, 15, 51, 13270 }, // U+2030
{ 7, 11, 7, 0, 11, 10, 13321 }, // U+2039
{ 7, 11, 7, 0, 11, 10, 13331 }, // U+203A
{ 11, 15, 3, -4, 15, 21, 13341 }, // U+2044
{ 8, 9, 8, 0, 15, 9, 13362 }, // U+2070
{ 8, 8, 8, 0, 15, 8, 13371 }, // U+2074
{ 7, 9, 8, 0, 15, 8, 13379 }, // U+2075
{ 8, 9, 8, 0, 15, 9, 13387 }, // U+2076
{ 8, 8, 8, 0, 15, 8, 13396 }, // U+2077
{ 8, 9, 8, 0, 15, 9, 13404 }, // U+2078
{ 8, 9, 8, 0, 15, 9, 13413 }, // U+2079
{ 8, 9, 8, 0, 9, 9, 13422 }, // U+2080
{ 6, 9, 8, 0, 9, 7, 13431 }, // U+2081
{ 7, 9, 8, 0, 9, 8, 13438 }, // U+2082
{ 7, 9, 8, 0, 9, 8, 13446 }, // U+2083
{ 8, 8, 8, 0, 9, 8, 13454 }, // U+2084
{ 7, 9, 8, 0, 9, 8, 13462 }, // U+2085
{ 8, 9, 8, 0, 9, 9, 13470 }, // U+2086
{ 8, 8, 8, 0, 9, 8, 13479 }, // U+2087
{ 8, 9, 8, 0, 9, 9, 13487 }, // U+2088
{ 8, 9, 8, 0, 9, 9, 13496 }, // U+2089
{ 12, 15, 12, 0, 15, 23, 13505 }, // U+20AC
{ 12, 15, 12, 0, 15, 23, 13528 }, // U+20AE
{ 12, 15, 12, 0, 15, 23, 13551 }, // U+20B4
{ 13, 15, 12, 0, 15, 25, 13574 }, // U+20B9
{ 12, 15, 13, 0, 15, 23, 13599 }, // U+2202
{ 15, 15, 15, 0, 15, 29, 13622 }, // U+2206
{ 13, 17, 15, 1, 15, 28, 13651 }, // U+220F
{ 11, 17, 11, 0, 15, 24, 13679 }, // U+2211
{ 10, 3, 12, 1, 8, 4, 13703 }, // U+2212
{ 11, 15, 3, -4, 15, 21, 13707 }, // U+2215
{ 5, 4, 5, 0, 9, 3, 13728 }, // U+2219
{ 14, 15, 13, 0, 15, 27, 13731 }, // U+221A
{ 13, 7, 13, 0, 10, 12, 13758 }, // U+221E
{ 9, 21, 8, 0, 16, 24, 13770 }, // U+222B
{ 12, 11, 12, 0, 12, 17, 13794 }, // U+2248
{ 10, 14, 12, 1, 14, 18, 13811 }, // U+2260
{ 10, 13, 12, 1, 13, 17, 13829 }, // U+2264
{ 10, 13, 12, 1, 13, 17, 13846 }, // U+2265
{ 17, 16, 18, 1, 16, 34, 13863 }, // U+FB00
{ 13, 16, 15, 1, 16, 26, 13897 }, // U+FB01
{ 15, 16, 15, 1, 16, 30, 13923 }, // U+FB02
{ 22, 16, 24, 1, 16, 44, 13953 }, // U+FB03
{ 23, 16, 24, 1, 16, 46, 13997 }, // U+FB04
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};
static const EpdUnicodeInterval ubuntu_10_boldIntervals[] = {
{ 0x0, 0x0, 0x0 },
{ 0x8, 0x9, 0x1 },
{ 0xD, 0xD, 0x3 },
{ 0x1D, 0x1D, 0x4 },
{ 0x20, 0x7E, 0x5 },
{ 0xA0, 0xFF, 0x64 },
{ 0x100, 0x17F, 0xC4 },
{ 0x311, 0x311, 0x144 },
{ 0x400, 0x45F, 0x145 },
{ 0x462, 0x463, 0x1A5 },
{ 0x472, 0x475, 0x1A7 },
{ 0x48A, 0x4F9, 0x1AB },
{ 0x2013, 0x2015, 0x21B },
{ 0x2018, 0x201A, 0x21E },
{ 0x201C, 0x201E, 0x221 },
{ 0x2020, 0x2022, 0x224 },
{ 0x2026, 0x2026, 0x227 },
{ 0x2030, 0x2030, 0x228 },
{ 0x2039, 0x203A, 0x229 },
{ 0x2044, 0x2044, 0x22B },
{ 0x2070, 0x2070, 0x22C },
{ 0x2074, 0x2079, 0x22D },
{ 0x2080, 0x2089, 0x233 },
{ 0x20AC, 0x20AC, 0x23D },
{ 0x20AE, 0x20AE, 0x23E },
{ 0x20B4, 0x20B4, 0x23F },
{ 0x20B9, 0x20B9, 0x240 },
{ 0x2202, 0x2202, 0x241 },
{ 0x2206, 0x2206, 0x242 },
{ 0x220F, 0x220F, 0x243 },
{ 0x2211, 0x2212, 0x244 },
{ 0x2215, 0x2215, 0x246 },
{ 0x2219, 0x221A, 0x247 },
{ 0x221E, 0x221E, 0x249 },
{ 0x222B, 0x222B, 0x24A },
{ 0x2248, 0x2248, 0x24B },
{ 0x2260, 0x2260, 0x24C },
{ 0x2264, 0x2265, 0x24D },
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 0xFB00, 0xFB04, 0x24F },
};
static const EpdKernClassEntry ubuntu_10_boldKernLeftClasses[] = {
{ 0x0022, 1 }, // "
{ 0x0026, 2 }, // &
{ 0x0027, 1 }, // '
{ 0x0028, 3 }, // (
{ 0x0029, 4 }, // )
{ 0x002A, 5 }, // *
{ 0x002C, 6 }, // ,
{ 0x002D, 7 }, // -
{ 0x002E, 6 }, // .
{ 0x002F, 8 }, // /
{ 0x003A, 9 }, // :
{ 0x003B, 9 }, // ;
{ 0x0040, 10 }, // @
{ 0x0041, 11 }, // A
{ 0x0042, 12 }, // B
{ 0x0043, 13 }, // C
{ 0x0044, 14 }, // D
{ 0x0045, 15 }, // E
{ 0x0046, 16 }, // F
{ 0x0047, 17 }, // G
{ 0x0048, 18 }, // H
{ 0x0049, 18 }, // I
{ 0x004A, 19 }, // J
{ 0x004B, 20 }, // K
{ 0x004C, 21 }, // L
{ 0x004D, 22 }, // M
{ 0x004E, 18 }, // N
{ 0x004F, 14 }, // O
{ 0x0050, 23 }, // P
{ 0x0051, 24 }, // Q
{ 0x0052, 25 }, // R
{ 0x0053, 26 }, // S
{ 0x0054, 27 }, // T
{ 0x0055, 28 }, // U
{ 0x0056, 29 }, // V
{ 0x0057, 30 }, // W
{ 0x0058, 31 }, // X
{ 0x0059, 32 }, // Y
{ 0x005A, 33 }, // Z
{ 0x005B, 34 }, // [
{ 0x005C, 35 }, // <backslash>
{ 0x005D, 36 }, // ]
{ 0x0061, 37 }, // a
{ 0x0062, 38 }, // b
{ 0x0063, 39 }, // c
{ 0x0064, 40 }, // d
{ 0x0066, 41 }, // f
{ 0x0067, 42 }, // g
{ 0x0068, 43 }, // h
{ 0x0069, 44 }, // i
{ 0x006A, 45 }, // j
{ 0x006B, 46 }, // k
{ 0x006C, 47 }, // l
{ 0x006D, 43 }, // m
{ 0x006E, 43 }, // n
{ 0x006F, 38 }, // o
{ 0x0070, 38 }, // p
{ 0x0071, 42 }, // q
{ 0x0072, 48 }, // r
{ 0x0073, 49 }, // s
{ 0x0074, 50 }, // t
{ 0x0075, 51 }, // u
{ 0x0076, 52 }, // v
{ 0x0077, 52 }, // w
{ 0x0078, 53 }, // x
{ 0x0079, 52 }, // y
{ 0x007A, 54 }, // z
{ 0x007B, 55 }, // {
{ 0x007D, 56 }, // }
{ 0x00A1, 57 }, // U+00A1
{ 0x00AB, 9 }, // U+00AB
{ 0x00BB, 58 }, // U+00BB
{ 0x00BF, 59 }, // U+00BF
{ 0x00C0, 11 }, // U+00C0
{ 0x00C1, 11 }, // U+00C1
{ 0x00C2, 11 }, // U+00C2
{ 0x00C3, 11 }, // U+00C3
{ 0x00C4, 11 }, // U+00C4
{ 0x00C5, 11 }, // U+00C5
{ 0x00C6, 15 }, // U+00C6
{ 0x00C7, 13 }, // U+00C7
{ 0x00C8, 15 }, // U+00C8
{ 0x00C9, 15 }, // U+00C9
{ 0x00CA, 15 }, // U+00CA
{ 0x00CB, 15 }, // U+00CB
{ 0x00CC, 18 }, // U+00CC
{ 0x00CD, 18 }, // U+00CD
{ 0x00CE, 18 }, // U+00CE
{ 0x00CF, 18 }, // U+00CF
{ 0x00D0, 14 }, // U+00D0
{ 0x00D1, 18 }, // U+00D1
{ 0x00D2, 14 }, // U+00D2
{ 0x00D3, 14 }, // U+00D3
{ 0x00D4, 14 }, // U+00D4
{ 0x00D5, 14 }, // U+00D5
{ 0x00D6, 14 }, // U+00D6
{ 0x00D8, 14 }, // U+00D8
{ 0x00D9, 28 }, // U+00D9
{ 0x00DA, 28 }, // U+00DA
{ 0x00DB, 28 }, // U+00DB
{ 0x00DC, 28 }, // U+00DC
{ 0x00DD, 32 }, // U+00DD
{ 0x00DE, 60 }, // U+00DE
{ 0x00DF, 61 }, // U+00DF
{ 0x00E0, 37 }, // U+00E0
{ 0x00E1, 37 }, // U+00E1
{ 0x00E2, 37 }, // U+00E2
{ 0x00E3, 37 }, // U+00E3
{ 0x00E4, 37 }, // U+00E4
{ 0x00E5, 37 }, // U+00E5
{ 0x00E7, 39 }, // U+00E7
{ 0x00EC, 44 }, // U+00EC
{ 0x00ED, 44 }, // U+00ED
{ 0x00EE, 44 }, // U+00EE
{ 0x00EF, 44 }, // U+00EF
{ 0x00F0, 62 }, // U+00F0
{ 0x00F1, 43 }, // U+00F1
{ 0x00F2, 38 }, // U+00F2
{ 0x00F3, 38 }, // U+00F3
{ 0x00F4, 38 }, // U+00F4
{ 0x00F5, 38 }, // U+00F5
{ 0x00F6, 38 }, // U+00F6
{ 0x00F8, 38 }, // U+00F8
{ 0x00F9, 51 }, // U+00F9
{ 0x00FA, 51 }, // U+00FA
{ 0x00FB, 51 }, // U+00FB
{ 0x00FC, 51 }, // U+00FC
{ 0x00FD, 52 }, // U+00FD
{ 0x00FE, 63 }, // U+00FE
{ 0x00FF, 52 }, // U+00FF
{ 0x0100, 11 }, // U+0100
{ 0x0101, 37 }, // U+0101
{ 0x0102, 11 }, // U+0102
{ 0x0103, 37 }, // U+0103
{ 0x0104, 11 }, // U+0104
{ 0x0105, 37 }, // U+0105
{ 0x0106, 13 }, // U+0106
{ 0x0107, 39 }, // U+0107
{ 0x0108, 13 }, // U+0108
{ 0x0109, 39 }, // U+0109
{ 0x010A, 13 }, // U+010A
{ 0x010B, 39 }, // U+010B
{ 0x010C, 13 }, // U+010C
{ 0x010D, 39 }, // U+010D
{ 0x010E, 14 }, // U+010E
{ 0x010F, 64 }, // U+010F
{ 0x0110, 14 }, // U+0110
{ 0x0111, 40 }, // U+0111
{ 0x0112, 15 }, // U+0112
{ 0x0114, 15 }, // U+0114
{ 0x0116, 15 }, // U+0116
{ 0x0118, 15 }, // U+0118
{ 0x011A, 15 }, // U+011A
{ 0x011C, 17 }, // U+011C
{ 0x011D, 42 }, // U+011D
{ 0x011E, 17 }, // U+011E
{ 0x011F, 42 }, // U+011F
{ 0x0120, 17 }, // U+0120
{ 0x0121, 42 }, // U+0121
{ 0x0122, 17 }, // U+0122
{ 0x0123, 42 }, // U+0123
{ 0x0124, 18 }, // U+0124
{ 0x0125, 43 }, // U+0125
{ 0x0126, 18 }, // U+0126
{ 0x0127, 43 }, // U+0127
{ 0x0128, 18 }, // U+0128
{ 0x0129, 44 }, // U+0129
{ 0x012A, 18 }, // U+012A
{ 0x012B, 44 }, // U+012B
{ 0x012C, 18 }, // U+012C
{ 0x012D, 44 }, // U+012D
{ 0x012E, 18 }, // U+012E
{ 0x012F, 44 }, // U+012F
{ 0x0130, 18 }, // U+0130
{ 0x0131, 44 }, // U+0131
{ 0x0132, 19 }, // U+0132
{ 0x0133, 45 }, // U+0133
{ 0x0134, 19 }, // U+0134
{ 0x0135, 45 }, // U+0135
{ 0x0136, 20 }, // U+0136
{ 0x0137, 46 }, // U+0137
{ 0x0138, 46 }, // U+0138
{ 0x0139, 21 }, // U+0139
{ 0x013A, 47 }, // U+013A
{ 0x013B, 21 }, // U+013B
{ 0x013C, 47 }, // U+013C
{ 0x013D, 21 }, // U+013D
{ 0x013E, 64 }, // U+013E
{ 0x013F, 21 }, // U+013F
{ 0x0140, 47 }, // U+0140
{ 0x0141, 21 }, // U+0141
{ 0x0142, 47 }, // U+0142
{ 0x0143, 18 }, // U+0143
{ 0x0144, 43 }, // U+0144
{ 0x0145, 18 }, // U+0145
{ 0x0146, 43 }, // U+0146
{ 0x0147, 18 }, // U+0147
{ 0x0148, 43 }, // U+0148
{ 0x0149, 43 }, // U+0149
{ 0x014B, 65 }, // U+014B
{ 0x014C, 14 }, // U+014C
{ 0x014D, 38 }, // U+014D
{ 0x014E, 14 }, // U+014E
{ 0x014F, 38 }, // U+014F
{ 0x0150, 14 }, // U+0150
{ 0x0151, 38 }, // U+0151
{ 0x0152, 15 }, // U+0152
{ 0x0154, 25 }, // U+0154
{ 0x0155, 48 }, // U+0155
{ 0x0156, 25 }, // U+0156
{ 0x0157, 48 }, // U+0157
{ 0x0158, 25 }, // U+0158
{ 0x0159, 48 }, // U+0159
{ 0x015A, 26 }, // U+015A
{ 0x015B, 49 }, // U+015B
{ 0x015C, 26 }, // U+015C
{ 0x015D, 49 }, // U+015D
{ 0x015E, 26 }, // U+015E
{ 0x015F, 49 }, // U+015F
{ 0x0160, 26 }, // U+0160
{ 0x0161, 49 }, // U+0161
{ 0x0162, 27 }, // U+0162
{ 0x0163, 50 }, // U+0163
{ 0x0164, 27 }, // U+0164
{ 0x0165, 50 }, // U+0165
{ 0x0166, 27 }, // U+0166
{ 0x0167, 50 }, // U+0167
{ 0x0168, 28 }, // U+0168
{ 0x0169, 51 }, // U+0169
{ 0x016A, 28 }, // U+016A
{ 0x016B, 51 }, // U+016B
{ 0x016C, 28 }, // U+016C
{ 0x016D, 51 }, // U+016D
{ 0x016E, 28 }, // U+016E
{ 0x016F, 51 }, // U+016F
{ 0x0170, 28 }, // U+0170
{ 0x0171, 51 }, // U+0171
{ 0x0172, 28 }, // U+0172
{ 0x0173, 51 }, // U+0173
{ 0x0174, 30 }, // U+0174
{ 0x0175, 52 }, // U+0175
{ 0x0176, 32 }, // U+0176
{ 0x0177, 52 }, // U+0177
{ 0x0178, 32 }, // U+0178
{ 0x0179, 33 }, // U+0179
{ 0x017A, 54 }, // U+017A
{ 0x017B, 33 }, // U+017B
{ 0x017C, 54 }, // U+017C
{ 0x017D, 33 }, // U+017D
{ 0x017E, 54 }, // U+017E
{ 0x017F, 41 }, // U+017F
{ 0x0400, 66 }, // U+0400
{ 0x0401, 66 }, // U+0401
{ 0x0402, 67 }, // U+0402
{ 0x0403, 68 }, // U+0403
{ 0x0404, 69 }, // U+0404
{ 0x0405, 70 }, // U+0405
{ 0x0406, 18 }, // U+0406
{ 0x0407, 18 }, // U+0407
{ 0x0408, 71 }, // U+0408
{ 0x0409, 72 }, // U+0409
{ 0x040A, 72 }, // U+040A
{ 0x040B, 73 }, // U+040B
{ 0x040C, 74 }, // U+040C
{ 0x040D, 18 }, // U+040D
{ 0x040E, 75 }, // U+040E
{ 0x040F, 18 }, // U+040F
{ 0x0410, 76 }, // U+0410
{ 0x0411, 67 }, // U+0411
{ 0x0412, 77 }, // U+0412
{ 0x0413, 68 }, // U+0413
{ 0x0414, 78 }, // U+0414
{ 0x0415, 66 }, // U+0415
{ 0x0416, 79 }, // U+0416
{ 0x0417, 80 }, // U+0417
{ 0x0418, 18 }, // U+0418
{ 0x0419, 18 }, // U+0419
{ 0x041A, 74 }, // U+041A
{ 0x041C, 81 }, // U+041C
{ 0x041D, 18 }, // U+041D
{ 0x041E, 82 }, // U+041E
{ 0x041F, 18 }, // U+041F
{ 0x0420, 83 }, // U+0420
{ 0x0421, 69 }, // U+0421
{ 0x0422, 84 }, // U+0422
{ 0x0423, 75 }, // U+0423
{ 0x0424, 85 }, // U+0424
{ 0x0425, 86 }, // U+0425
{ 0x0426, 78 }, // U+0426
{ 0x0428, 18 }, // U+0428
{ 0x0429, 78 }, // U+0429
{ 0x042A, 72 }, // U+042A
{ 0x042B, 18 }, // U+042B
{ 0x042C, 72 }, // U+042C
{ 0x042D, 82 }, // U+042D
{ 0x042E, 82 }, // U+042E
{ 0x0430, 87 }, // U+0430
{ 0x0431, 88 }, // U+0431
{ 0x0432, 87 }, // U+0432
{ 0x0433, 89 }, // U+0433
{ 0x0434, 90 }, // U+0434
{ 0x0435, 91 }, // U+0435
{ 0x0436, 92 }, // U+0436
{ 0x0437, 93 }, // U+0437
{ 0x043A, 94 }, // U+043A
{ 0x043B, 95 }, // U+043B
{ 0x043C, 96 }, // U+043C
{ 0x043D, 95 }, // U+043D
{ 0x043E, 97 }, // U+043E
{ 0x043F, 95 }, // U+043F
{ 0x0440, 98 }, // U+0440
{ 0x0441, 99 }, // U+0441
{ 0x0442, 100 }, // U+0442
{ 0x0443, 101 }, // U+0443
{ 0x0444, 102 }, // U+0444
{ 0x0445, 103 }, // U+0445
{ 0x0446, 90 }, // U+0446
{ 0x0447, 95 }, // U+0447
{ 0x0448, 95 }, // U+0448
{ 0x0449, 90 }, // U+0449
{ 0x044A, 104 }, // U+044A
{ 0x044B, 95 }, // U+044B
{ 0x044C, 104 }, // U+044C
{ 0x044D, 105 }, // U+044D
{ 0x044E, 97 }, // U+044E
{ 0x044F, 95 }, // U+044F
{ 0x0450, 91 }, // U+0450
{ 0x0451, 91 }, // U+0451
{ 0x0452, 106 }, // U+0452
{ 0x0453, 89 }, // U+0453
{ 0x0454, 107 }, // U+0454
{ 0x0455, 108 }, // U+0455
{ 0x0456, 109 }, // U+0456
{ 0x0457, 109 }, // U+0457
{ 0x0458, 110 }, // U+0458
{ 0x0459, 104 }, // U+0459
{ 0x045A, 104 }, // U+045A
{ 0x045B, 111 }, // U+045B
{ 0x045C, 94 }, // U+045C
{ 0x045E, 101 }, // U+045E
{ 0x045F, 95 }, // U+045F
{ 0x0462, 67 }, // U+0462
{ 0x0463, 112 }, // U+0463
{ 0x0472, 82 }, // U+0472
{ 0x0473, 97 }, // U+0473
{ 0x0474, 113 }, // U+0474
{ 0x0475, 89 }, // U+0475
{ 0x048A, 78 }, // U+048A
{ 0x048B, 90 }, // U+048B
{ 0x048C, 72 }, // U+048C
{ 0x048D, 104 }, // U+048D
{ 0x048F, 98 }, // U+048F
{ 0x0490, 68 }, // U+0490
{ 0x0491, 89 }, // U+0491
{ 0x0492, 68 }, // U+0492
{ 0x0493, 89 }, // U+0493
{ 0x0494, 67 }, // U+0494
{ 0x0495, 114 }, // U+0495
{ 0x0496, 79 }, // U+0496
{ 0x0497, 92 }, // U+0497
{ 0x0498, 80 }, // U+0498
{ 0x0499, 93 }, // U+0499
{ 0x049A, 74 }, // U+049A
{ 0x049B, 94 }, // U+049B
{ 0x049C, 74 }, // U+049C
{ 0x049D, 94 }, // U+049D
{ 0x049E, 74 }, // U+049E
{ 0x049F, 94 }, // U+049F
{ 0x04A0, 74 }, // U+04A0
{ 0x04A1, 94 }, // U+04A1
{ 0x04A2, 78 }, // U+04A2
{ 0x04A3, 90 }, // U+04A3
{ 0x04A4, 84 }, // U+04A4
{ 0x04A5, 89 }, // U+04A5
{ 0x04A6, 72 }, // U+04A6
{ 0x04A7, 115 }, // U+04A7
{ 0x04A8, 116 }, // U+04A8
{ 0x04A9, 117 }, // U+04A9
{ 0x04AA, 69 }, // U+04AA
{ 0x04AB, 99 }, // U+04AB
{ 0x04AC, 84 }, // U+04AC
{ 0x04AD, 100 }, // U+04AD
{ 0x04AE, 118 }, // U+04AE
{ 0x04AF, 119 }, // U+04AF
{ 0x04B0, 118 }, // U+04B0
{ 0x04B1, 119 }, // U+04B1
{ 0x04B2, 86 }, // U+04B2
{ 0x04B3, 103 }, // U+04B3
{ 0x04B4, 78 }, // U+04B4
{ 0x04B5, 90 }, // U+04B5
{ 0x04B6, 78 }, // U+04B6
{ 0x04B7, 90 }, // U+04B7
{ 0x04BA, 120 }, // U+04BA
{ 0x04BB, 111 }, // U+04BB
{ 0x04BC, 121 }, // U+04BC
{ 0x04BE, 121 }, // U+04BE
{ 0x04C0, 18 }, // U+04C0
{ 0x04C1, 79 }, // U+04C1
{ 0x04C2, 92 }, // U+04C2
{ 0x04C3, 122 }, // U+04C3
{ 0x04C4, 123 }, // U+04C4
{ 0x04C6, 90 }, // U+04C6
{ 0x04C7, 71 }, // U+04C7
{ 0x04C8, 124 }, // U+04C8
{ 0x04C9, 78 }, // U+04C9
{ 0x04CA, 90 }, // U+04CA
{ 0x04CC, 95 }, // U+04CC
{ 0x04CD, 78 }, // U+04CD
{ 0x04CE, 90 }, // U+04CE
{ 0x04CF, 18 }, // U+04CF
{ 0x04D0, 76 }, // U+04D0
{ 0x04D1, 87 }, // U+04D1
{ 0x04D2, 76 }, // U+04D2
{ 0x04D3, 87 }, // U+04D3
{ 0x04D4, 125 }, // U+04D4
{ 0x04D5, 87 }, // U+04D5
{ 0x04D6, 66 }, // U+04D6
{ 0x04D7, 91 }, // U+04D7
{ 0x04D8, 126 }, // U+04D8
{ 0x04DA, 126 }, // U+04DA
{ 0x04DC, 79 }, // U+04DC
{ 0x04DD, 92 }, // U+04DD
{ 0x04DE, 80 }, // U+04DE
{ 0x04DF, 93 }, // U+04DF
{ 0x04E0, 127 }, // U+04E0
{ 0x04E1, 128 }, // U+04E1
{ 0x04E2, 18 }, // U+04E2
{ 0x04E4, 18 }, // U+04E4
{ 0x04E6, 82 }, // U+04E6
{ 0x04E7, 97 }, // U+04E7
{ 0x04E8, 82 }, // U+04E8
{ 0x04E9, 97 }, // U+04E9
{ 0x04EA, 82 }, // U+04EA
{ 0x04EB, 97 }, // U+04EB
{ 0x04EC, 82 }, // U+04EC
{ 0x04ED, 93 }, // U+04ED
{ 0x04EE, 75 }, // U+04EE
{ 0x04EF, 101 }, // U+04EF
{ 0x04F0, 75 }, // U+04F0
{ 0x04F1, 101 }, // U+04F1
{ 0x04F2, 75 }, // U+04F2
{ 0x04F3, 101 }, // U+04F3
{ 0x04F6, 68 }, // U+04F6
{ 0x04F7, 89 }, // U+04F7
{ 0x04F8, 18 }, // U+04F8
{ 0x04F9, 95 }, // U+04F9
{ 0x2013, 7 }, // U+2013
{ 0x2014, 7 }, // U+2014
{ 0x2018, 129 }, // U+2018
{ 0x2019, 130 }, // U+2019
{ 0x201A, 131 }, // U+201A
{ 0x201C, 129 }, // U+201C
{ 0x201D, 130 }, // U+201D
{ 0x201E, 131 }, // U+201E
{ 0x2026, 6 }, // U+2026
{ 0x2039, 9 }, // U+2039
{ 0x203A, 58 }, // U+203A
{ 0xFB00, 41 }, // U+FB00
{ 0xFB01, 44 }, // U+FB01
{ 0xFB02, 47 }, // U+FB02
{ 0xFB03, 44 }, // U+FB03
{ 0xFB04, 47 }, // U+FB04
};
static const EpdKernClassEntry ubuntu_10_boldKernRightClasses[] = {
{ 0x0022, 1 }, // "
{ 0x0026, 2 }, // &
{ 0x0027, 1 }, // '
{ 0x0028, 3 }, // (
{ 0x0029, 4 }, // )
{ 0x002A, 5 }, // *
{ 0x002C, 6 }, // ,
{ 0x002D, 7 }, // -
{ 0x002E, 6 }, // .
{ 0x002F, 8 }, // /
{ 0x003A, 9 }, // :
{ 0x003B, 9 }, // ;
{ 0x003F, 10 }, // ?
{ 0x0040, 11 }, // @
{ 0x0041, 12 }, // A
{ 0x0042, 13 }, // B
{ 0x0043, 14 }, // C
{ 0x0044, 13 }, // D
{ 0x0045, 13 }, // E
{ 0x0046, 13 }, // F
{ 0x0047, 14 }, // G
{ 0x0048, 13 }, // H
{ 0x0049, 13 }, // I
{ 0x004A, 15 }, // J
{ 0x004B, 13 }, // K
{ 0x004C, 13 }, // L
{ 0x004D, 16 }, // M
{ 0x004E, 13 }, // N
{ 0x004F, 17 }, // O
{ 0x0050, 13 }, // P
{ 0x0051, 17 }, // Q
{ 0x0052, 13 }, // R
{ 0x0053, 18 }, // S
{ 0x0054, 19 }, // T
{ 0x0055, 20 }, // U
{ 0x0056, 21 }, // V
{ 0x0057, 22 }, // W
{ 0x0058, 23 }, // X
{ 0x0059, 24 }, // Y
{ 0x005A, 25 }, // Z
{ 0x005B, 26 }, // [
{ 0x005C, 27 }, // <backslash>
{ 0x005D, 28 }, // ]
{ 0x0061, 29 }, // a
{ 0x0062, 30 }, // b
{ 0x0063, 31 }, // c
{ 0x0064, 31 }, // d
{ 0x0065, 31 }, // e
{ 0x0066, 32 }, // f
{ 0x0067, 31 }, // g
{ 0x0068, 30 }, // h
{ 0x0069, 30 }, // i
{ 0x006A, 33 }, // j
{ 0x006B, 30 }, // k
{ 0x006C, 30 }, // l
{ 0x006D, 34 }, // m
{ 0x006E, 34 }, // n
{ 0x006F, 31 }, // o
{ 0x0070, 34 }, // p
{ 0x0071, 31 }, // q
{ 0x0072, 34 }, // r
{ 0x0073, 35 }, // s
{ 0x0074, 36 }, // t
{ 0x0075, 37 }, // u
{ 0x0076, 38 }, // v
{ 0x0077, 39 }, // w
{ 0x0078, 40 }, // x
{ 0x0079, 41 }, // y
{ 0x007A, 42 }, // z
{ 0x007B, 43 }, // {
{ 0x007D, 44 }, // }
{ 0x00AB, 45 }, // U+00AB
{ 0x00BB, 46 }, // U+00BB
{ 0x00C0, 12 }, // U+00C0
{ 0x00C1, 12 }, // U+00C1
{ 0x00C2, 12 }, // U+00C2
{ 0x00C3, 12 }, // U+00C3
{ 0x00C4, 12 }, // U+00C4
{ 0x00C5, 12 }, // U+00C5
{ 0x00C6, 47 }, // U+00C6
{ 0x00C7, 14 }, // U+00C7
{ 0x00C8, 13 }, // U+00C8
{ 0x00C9, 13 }, // U+00C9
{ 0x00CA, 13 }, // U+00CA
{ 0x00CB, 13 }, // U+00CB
{ 0x00CC, 13 }, // U+00CC
{ 0x00CD, 13 }, // U+00CD
{ 0x00CE, 13 }, // U+00CE
{ 0x00CF, 13 }, // U+00CF
{ 0x00D0, 13 }, // U+00D0
{ 0x00D1, 13 }, // U+00D1
{ 0x00D2, 17 }, // U+00D2
{ 0x00D3, 17 }, // U+00D3
{ 0x00D4, 17 }, // U+00D4
{ 0x00D5, 17 }, // U+00D5
{ 0x00D6, 17 }, // U+00D6
{ 0x00D8, 17 }, // U+00D8
{ 0x00D9, 20 }, // U+00D9
{ 0x00DA, 20 }, // U+00DA
{ 0x00DB, 20 }, // U+00DB
{ 0x00DC, 20 }, // U+00DC
{ 0x00DD, 24 }, // U+00DD
{ 0x00DF, 32 }, // U+00DF
{ 0x00E0, 29 }, // U+00E0
{ 0x00E1, 29 }, // U+00E1
{ 0x00E2, 29 }, // U+00E2
{ 0x00E3, 29 }, // U+00E3
{ 0x00E4, 48 }, // U+00E4
{ 0x00E5, 29 }, // U+00E5
{ 0x00E6, 29 }, // U+00E6
{ 0x00E7, 31 }, // U+00E7
{ 0x00E8, 31 }, // U+00E8
{ 0x00E9, 31 }, // U+00E9
{ 0x00EA, 31 }, // U+00EA
{ 0x00EB, 31 }, // U+00EB
{ 0x00EC, 49 }, // U+00EC
{ 0x00ED, 30 }, // U+00ED
{ 0x00EE, 50 }, // U+00EE
{ 0x00EF, 51 }, // U+00EF
{ 0x00F0, 52 }, // U+00F0
{ 0x00F1, 34 }, // U+00F1
{ 0x00F2, 31 }, // U+00F2
{ 0x00F3, 31 }, // U+00F3
{ 0x00F4, 31 }, // U+00F4
{ 0x00F5, 31 }, // U+00F5
{ 0x00F6, 31 }, // U+00F6
{ 0x00F8, 31 }, // U+00F8
{ 0x00F9, 37 }, // U+00F9
{ 0x00FA, 37 }, // U+00FA
{ 0x00FB, 37 }, // U+00FB
{ 0x00FC, 37 }, // U+00FC
{ 0x00FD, 41 }, // U+00FD
{ 0x00FF, 41 }, // U+00FF
{ 0x0100, 12 }, // U+0100
{ 0x0101, 29 }, // U+0101
{ 0x0102, 12 }, // U+0102
{ 0x0103, 29 }, // U+0103
{ 0x0104, 12 }, // U+0104
{ 0x0105, 29 }, // U+0105
{ 0x0106, 14 }, // U+0106
{ 0x0107, 31 }, // U+0107
{ 0x0108, 14 }, // U+0108
{ 0x0109, 31 }, // U+0109
{ 0x010A, 14 }, // U+010A
{ 0x010B, 31 }, // U+010B
{ 0x010C, 14 }, // U+010C
{ 0x010D, 31 }, // U+010D
{ 0x010E, 13 }, // U+010E
{ 0x010F, 31 }, // U+010F
{ 0x0111, 31 }, // U+0111
{ 0x0112, 13 }, // U+0112
{ 0x0113, 31 }, // U+0113
{ 0x0114, 13 }, // U+0114
{ 0x0115, 31 }, // U+0115
{ 0x0116, 13 }, // U+0116
{ 0x0117, 31 }, // U+0117
{ 0x0118, 13 }, // U+0118
{ 0x0119, 31 }, // U+0119
{ 0x011A, 13 }, // U+011A
{ 0x011B, 31 }, // U+011B
{ 0x011C, 14 }, // U+011C
{ 0x011D, 31 }, // U+011D
{ 0x011E, 14 }, // U+011E
{ 0x011F, 31 }, // U+011F
{ 0x0120, 14 }, // U+0120
{ 0x0121, 31 }, // U+0121
{ 0x0122, 14 }, // U+0122
{ 0x0123, 31 }, // U+0123
{ 0x0124, 13 }, // U+0124
{ 0x0125, 30 }, // U+0125
{ 0x0126, 13 }, // U+0126
{ 0x0127, 30 }, // U+0127
{ 0x0128, 13 }, // U+0128
{ 0x0129, 53 }, // U+0129
{ 0x012A, 13 }, // U+012A
{ 0x012B, 53 }, // U+012B
{ 0x012C, 13 }, // U+012C
{ 0x012D, 53 }, // U+012D
{ 0x012E, 13 }, // U+012E
{ 0x012F, 30 }, // U+012F
{ 0x0130, 13 }, // U+0130
{ 0x0131, 30 }, // U+0131
{ 0x0132, 13 }, // U+0132
{ 0x0133, 30 }, // U+0133
{ 0x0134, 15 }, // U+0134
{ 0x0135, 33 }, // U+0135
{ 0x0136, 13 }, // U+0136
{ 0x0137, 30 }, // U+0137
{ 0x0139, 13 }, // U+0139
{ 0x013A, 30 }, // U+013A
{ 0x013B, 13 }, // U+013B
{ 0x013C, 30 }, // U+013C
{ 0x013D, 13 }, // U+013D
{ 0x013E, 30 }, // U+013E
{ 0x013F, 13 }, // U+013F
{ 0x0140, 30 }, // U+0140
{ 0x0141, 13 }, // U+0141
{ 0x0142, 30 }, // U+0142
{ 0x0143, 13 }, // U+0143
{ 0x0144, 34 }, // U+0144
{ 0x0145, 13 }, // U+0145
{ 0x0146, 34 }, // U+0146
{ 0x0147, 13 }, // U+0147
{ 0x0148, 34 }, // U+0148
{ 0x0149, 34 }, // U+0149
{ 0x014A, 54 }, // U+014A
{ 0x014B, 55 }, // U+014B
{ 0x014C, 17 }, // U+014C
{ 0x014D, 31 }, // U+014D
{ 0x014E, 17 }, // U+014E
{ 0x014F, 31 }, // U+014F
{ 0x0150, 17 }, // U+0150
{ 0x0151, 31 }, // U+0151
{ 0x0152, 17 }, // U+0152
{ 0x0153, 31 }, // U+0153
{ 0x0154, 13 }, // U+0154
{ 0x0155, 34 }, // U+0155
{ 0x0156, 13 }, // U+0156
{ 0x0157, 34 }, // U+0157
{ 0x0158, 13 }, // U+0158
{ 0x0159, 34 }, // U+0159
{ 0x015A, 18 }, // U+015A
{ 0x015B, 35 }, // U+015B
{ 0x015C, 18 }, // U+015C
{ 0x015D, 35 }, // U+015D
{ 0x015E, 18 }, // U+015E
{ 0x015F, 35 }, // U+015F
{ 0x0160, 18 }, // U+0160
{ 0x0161, 35 }, // U+0161
{ 0x0162, 19 }, // U+0162
{ 0x0163, 36 }, // U+0163
{ 0x0164, 19 }, // U+0164
{ 0x0165, 36 }, // U+0165
{ 0x0166, 19 }, // U+0166
{ 0x0167, 36 }, // U+0167
{ 0x0168, 20 }, // U+0168
{ 0x0169, 37 }, // U+0169
{ 0x016A, 20 }, // U+016A
{ 0x016B, 37 }, // U+016B
{ 0x016C, 20 }, // U+016C
{ 0x016D, 37 }, // U+016D
{ 0x016E, 20 }, // U+016E
{ 0x016F, 37 }, // U+016F
{ 0x0170, 20 }, // U+0170
{ 0x0171, 37 }, // U+0171
{ 0x0172, 20 }, // U+0172
{ 0x0173, 37 }, // U+0173
{ 0x0174, 22 }, // U+0174
{ 0x0175, 39 }, // U+0175
{ 0x0176, 24 }, // U+0176
{ 0x0177, 41 }, // U+0177
{ 0x0178, 24 }, // U+0178
{ 0x0179, 25 }, // U+0179
{ 0x017A, 42 }, // U+017A
{ 0x017B, 25 }, // U+017B
{ 0x017C, 42 }, // U+017C
{ 0x017D, 25 }, // U+017D
{ 0x017E, 42 }, // U+017E
{ 0x017F, 32 }, // U+017F
{ 0x0402, 56 }, // U+0402
{ 0x0404, 57 }, // U+0404
{ 0x0405, 58 }, // U+0405
{ 0x0408, 59 }, // U+0408
{ 0x0409, 60 }, // U+0409
{ 0x040B, 56 }, // U+040B
{ 0x040E, 61 }, // U+040E
{ 0x0410, 62 }, // U+0410
{ 0x0414, 63 }, // U+0414
{ 0x0416, 64 }, // U+0416
{ 0x0417, 65 }, // U+0417
{ 0x041B, 60 }, // U+041B
{ 0x041C, 66 }, // U+041C
{ 0x041E, 67 }, // U+041E
{ 0x0421, 57 }, // U+0421
{ 0x0422, 56 }, // U+0422
{ 0x0423, 61 }, // U+0423
{ 0x0424, 68 }, // U+0424
{ 0x0425, 69 }, // U+0425
{ 0x0427, 70 }, // U+0427
{ 0x042D, 71 }, // U+042D
{ 0x042F, 72 }, // U+042F
{ 0x0430, 73 }, // U+0430
{ 0x0431, 74 }, // U+0431
{ 0x0432, 75 }, // U+0432
{ 0x0433, 75 }, // U+0433
{ 0x0434, 76 }, // U+0434
{ 0x0435, 77 }, // U+0435
{ 0x0436, 78 }, // U+0436
{ 0x0437, 79 }, // U+0437
{ 0x0438, 75 }, // U+0438
{ 0x0439, 75 }, // U+0439
{ 0x043A, 75 }, // U+043A
{ 0x043B, 80 }, // U+043B
{ 0x043C, 81 }, // U+043C
{ 0x043D, 75 }, // U+043D
{ 0x043E, 82 }, // U+043E
{ 0x043F, 75 }, // U+043F
{ 0x0440, 83 }, // U+0440
{ 0x0441, 84 }, // U+0441
{ 0x0442, 85 }, // U+0442
{ 0x0443, 86 }, // U+0443
{ 0x0444, 87 }, // U+0444
{ 0x0445, 88 }, // U+0445
{ 0x0446, 75 }, // U+0446
{ 0x0447, 89 }, // U+0447
{ 0x0448, 75 }, // U+0448
{ 0x0449, 75 }, // U+0449
{ 0x044A, 90 }, // U+044A
{ 0x044B, 75 }, // U+044B
{ 0x044C, 75 }, // U+044C
{ 0x044D, 91 }, // U+044D
{ 0x044E, 92 }, // U+044E
{ 0x044F, 93 }, // U+044F
{ 0x0450, 77 }, // U+0450
{ 0x0451, 77 }, // U+0451
{ 0x0452, 94 }, // U+0452
{ 0x0453, 75 }, // U+0453
{ 0x0454, 95 }, // U+0454
{ 0x0455, 96 }, // U+0455
{ 0x0457, 97 }, // U+0457
{ 0x0458, 98 }, // U+0458
{ 0x0459, 80 }, // U+0459
{ 0x045A, 75 }, // U+045A
{ 0x045B, 99 }, // U+045B
{ 0x045C, 75 }, // U+045C
{ 0x045D, 75 }, // U+045D
{ 0x045E, 86 }, // U+045E
{ 0x045F, 75 }, // U+045F
{ 0x0462, 56 }, // U+0462
{ 0x0463, 100 }, // U+0463
{ 0x0472, 67 }, // U+0472
{ 0x0473, 82 }, // U+0473
{ 0x0475, 86 }, // U+0475
{ 0x048B, 75 }, // U+048B
{ 0x048D, 101 }, // U+048D
{ 0x048F, 83 }, // U+048F
{ 0x0491, 75 }, // U+0491
{ 0x0493, 75 }, // U+0493
{ 0x0495, 75 }, // U+0495
{ 0x0496, 64 }, // U+0496
{ 0x0497, 78 }, // U+0497
{ 0x0498, 65 }, // U+0498
{ 0x0499, 79 }, // U+0499
{ 0x049B, 75 }, // U+049B
{ 0x049D, 75 }, // U+049D
{ 0x049F, 75 }, // U+049F
{ 0x04A1, 75 }, // U+04A1
{ 0x04A3, 75 }, // U+04A3
{ 0x04A5, 75 }, // U+04A5
{ 0x04A7, 75 }, // U+04A7
{ 0x04A8, 57 }, // U+04A8
{ 0x04A9, 102 }, // U+04A9
{ 0x04AA, 57 }, // U+04AA
{ 0x04AB, 84 }, // U+04AB
{ 0x04AC, 56 }, // U+04AC
{ 0x04AD, 85 }, // U+04AD
{ 0x04AE, 103 }, // U+04AE
{ 0x04AF, 100 }, // U+04AF
{ 0x04B0, 103 }, // U+04B0
{ 0x04B1, 100 }, // U+04B1
{ 0x04B2, 69 }, // U+04B2
{ 0x04B3, 88 }, // U+04B3
{ 0x04B4, 56 }, // U+04B4
{ 0x04B5, 85 }, // U+04B5
{ 0x04B6, 70 }, // U+04B6
{ 0x04B7, 89 }, // U+04B7
{ 0x04B8, 70 }, // U+04B8
{ 0x04B9, 89 }, // U+04B9
{ 0x04BC, 104 }, // U+04BC
{ 0x04BD, 105 }, // U+04BD
{ 0x04BE, 104 }, // U+04BE
{ 0x04BF, 105 }, // U+04BF
{ 0x04C1, 64 }, // U+04C1
{ 0x04C2, 78 }, // U+04C2
{ 0x04C4, 75 }, // U+04C4
{ 0x04C5, 60 }, // U+04C5
{ 0x04C6, 80 }, // U+04C6
{ 0x04C8, 75 }, // U+04C8
{ 0x04CA, 75 }, // U+04CA
{ 0x04CB, 70 }, // U+04CB
{ 0x04CC, 89 }, // U+04CC
{ 0x04CE, 81 }, // U+04CE
{ 0x04D0, 62 }, // U+04D0
{ 0x04D1, 73 }, // U+04D1
{ 0x04D2, 62 }, // U+04D2
{ 0x04D3, 73 }, // U+04D3
{ 0x04D4, 106 }, // U+04D4
{ 0x04D5, 107 }, // U+04D5
{ 0x04D7, 77 }, // U+04D7
{ 0x04D8, 108 }, // U+04D8
{ 0x04D9, 109 }, // U+04D9
{ 0x04DA, 108 }, // U+04DA
{ 0x04DB, 109 }, // U+04DB
{ 0x04DC, 64 }, // U+04DC
{ 0x04DD, 78 }, // U+04DD
{ 0x04DE, 65 }, // U+04DE
{ 0x04DF, 79 }, // U+04DF
{ 0x04E0, 110 }, // U+04E0
{ 0x04E1, 111 }, // U+04E1
{ 0x04E3, 75 }, // U+04E3
{ 0x04E5, 75 }, // U+04E5
{ 0x04E6, 67 }, // U+04E6
{ 0x04E7, 82 }, // U+04E7
{ 0x04E8, 67 }, // U+04E8
{ 0x04E9, 82 }, // U+04E9
{ 0x04EA, 67 }, // U+04EA
{ 0x04EB, 82 }, // U+04EB
{ 0x04EC, 71 }, // U+04EC
{ 0x04ED, 79 }, // U+04ED
{ 0x04EE, 61 }, // U+04EE
{ 0x04EF, 86 }, // U+04EF
{ 0x04F0, 61 }, // U+04F0
{ 0x04F1, 86 }, // U+04F1
{ 0x04F2, 61 }, // U+04F2
{ 0x04F3, 86 }, // U+04F3
{ 0x04F4, 70 }, // U+04F4
{ 0x04F5, 89 }, // U+04F5
{ 0x04F7, 75 }, // U+04F7
{ 0x04F9, 75 }, // U+04F9
{ 0x2013, 7 }, // U+2013
{ 0x2014, 7 }, // U+2014
{ 0x2018, 112 }, // U+2018
{ 0x2019, 113 }, // U+2019
{ 0x201A, 114 }, // U+201A
{ 0x201C, 112 }, // U+201C
{ 0x201D, 113 }, // U+201D
{ 0x201E, 114 }, // U+201E
{ 0x2026, 6 }, // U+2026
{ 0x2039, 45 }, // U+2039
{ 0x203A, 46 }, // U+203A
{ 0xFB00, 32 }, // U+FB00
{ 0xFB01, 32 }, // U+FB01
{ 0xFB02, 32 }, // U+FB02
{ 0xFB03, 32 }, // U+FB03
{ 0xFB04, 32 }, // U+FB04
};
static const int8_t ubuntu_10_boldKernMatrix[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0, -2, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -3, -1, 0, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -2, 0, -2, -1, 0, -3, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 1, -1, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 1, -1, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, -1, 0, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, -1, 0, 1, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0,
0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, 0, 0, -3, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -3, -2, -1, -2, -2, -1, -1, -1, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, -2, -1, -1, 0, -1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -2, -1, -2, -1, 0, -2, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -2, -2, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -2, -2, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -2, 0, -1, 0, -1, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, 0, -1, -2, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, -1, 0, -2, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -3, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -2, -2, 0, -2, -2, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -2, -1, 0, -1, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0,
-2, 0, -1, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -2, -1, -2, -1, 0, -3, 0, 0, -2, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0,
0, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -2, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, -1, 0, 0, -2, 0, -2, 0, 0, -1, -1, 0, -1, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1, 0, 0, 0, -1, -3, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2,
0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, -1, 0, -1, 0, -2, 0, 0, 0, -1, 0, 0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, -1, 0, -2, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-3, 0, 0, 0, -3, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -2, -1, -2, -2, 0, -3, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0,
0, 0, 0, 0, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, -1, 0, -1, 0, -3, 0, -2, 0, 0, 0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -3, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2,
0, 0, 0, -1, 0, -1, 0, -2, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
0, 0, 0, 0, -1, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 0, -1, 0, -1, -1, -1, 0, 0, -1, 0, 0, -1, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, -1, -1, 0, 0, -2, -2, -3, -2, 0, -1, -2, 0, -1, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -2, 0, 0, -2, -2, 0, -2, -2, -2, -2, -2, -2, -1, 0, -2, -2, -3, -2, -1, 0, 0, -2, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2,
0, 0, 0, 0, 0, -1, 0, -2, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, -1, 0, 0, -2, -1, -2, -1, 0, -1, -2, 0, -1, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, -4, -1, 0, 0, 1, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2,
0, -1, -1, 0, 0, -1, 0, -2, 0, 0, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, -2, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
0, -1, -1, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -2, -1, 0, -1, -2, -2, -3, -1, 0, -2, -3, 0, -1, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -2, 0, 0, -1, -2, 0, -1, -1, 0, -1, -1, -1, -1, 0, -2, -1, -3, -3, 0, 0, 1, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2,
0, -1, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, -1, 0, 1, -1, -1, 0, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 0, 1, 0, -1, -1, -1, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, -2, -1, -3, -2, 0, -3, 0, 0, 0, 0, -1, 0, -1, 0, 2, 0, 0, -1, -1, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0,
-1, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
-1, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2,
0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
-1, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, -1, 0, 0, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2,
0, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, -1, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1, 0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, -2, 0, -1, -1, -1, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -2, -1, -1, -1, -3, -1, -2, -1, -2, -2, -2, 0, 0, 0, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, -2, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -2, 0, -2, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, -1, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0,
0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 1, 1, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
-1, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, -1, 0, 0, -2, -2, -3, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -2, 0, -2, -2, 0, 0, -1, -1, -1, 0, 0, 0, -1, -2, -1, -2, -2, -2, 0, -1, -2, -2, -2, -2, -2, 0, 0, -2, -2, -2, 0, -2, -2, -2, 0, -2, -2, 0, 0, 0, 0, 0, -2, 0, 0, -2, -3, -2, -1, -2, 0, -1, 0, 0, 0,
0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0,
-1, 0, -1, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-2, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, 0,
-1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, -1, 0, -1, 0, -2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, 0, -2, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, -2, 0, 0, -1, -1, 0, -2, 0, 0, 0,
0, 0, -1, 0, 0, -2, -1, -2, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -2, 0, -2, -2, 0, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -2, -1, 0, 0, -2, -1, -2, -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 1, 0, 0, 0, 0, -1, 0, 0, 0, -2, -1, 0, -1, 0, 0, 0, 0, 0,
-2, 0, -1, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -2, -1, -1, 0, 0, -1, 0, 0, -1, -2, -2, 0,
0, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, -1, 0, -1, 0, -2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, 0, 0, 0,
0, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, -1, 0, -1, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0,
0, 0, 0, -1, 0, -3, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0, -2, -2, -1, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, 0, -2, -2, -3, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0, -2, -2, 0, 0, -1, -1, -1, 0, 0, 0, 0, -2, 0, 0, -1, -1, 0, 0, -1, -1, -2, 0, -2, 0, 0, -2, -2, 0, 0, 0, 0, -1, 0, -1, -2, 1, 0, 0, 0, 0, -1, 0, 0, 0, -2, -1, 0, -1, 0, 0, 0, 0, 0,
-1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0,
0, 0, -1, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, -1, 0, -1, 0, 0, 0,
-1, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
-1, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
-1, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
-1, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
-1, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-2, 0, 0, -1, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, 0,
-1, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
-1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
-1, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
-2, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0,
0, 0, -1, 0, 0, -3, -2, -2, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -2, 0, -2, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, -1, -2, -2, 0, 0, -2, -1, -2, -1, -2, 0, 0, -2, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, -2, 0, 0, -1, -2, -1, 0, -1, 0, 0, 0, 0, 0,
-1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
-2, 0, -1, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, -2, 0,
-1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
-2, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, -1, 0, 0, -2, -1, -2, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, -2, 0, -2, -2, 0, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -2, -2, 0, -1, -2, -1, -2, -1, -2, 0, 0, -2, 0, -1, 0, -1, -1, -2, 0, -2, -1, 0, 0, 0, 0, 0, -2, 0, 0, -1, -2, -1, 0, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-2, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, -2, -2, 0,
0, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -1, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -2, -2, 0, -2, -2, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, 0, -1, 0, 0, -2, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, -3, -1, 0, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -1, -3, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, -2, -1, 0, -1, -2, 0, -1, -1, -1, 0, -1, -1, 0, 0, 0, 0, -3, -2, -1, -1, -1, -2, -1, 0, 0, 0, -1, -1, -3, -2, 0, -3, -2, 0, 0, 0, -1, -1, 0, 0, 0, -1, -2, 0, -1, -2, -2, 0, -1, -2, -1, -2, -1, -2, 0, 0, -2, 0, 0, 0, -1, -1, -1, 0, -1, -2, 0, 0, 0, 0, 0, -2, 0, 0, -1, -3, -1, -1, -1, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -2, -1, -3, -2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
static const EpdLigaturePair ubuntu_10_boldLigaturePairs[] = {
{ 0x00660066, 0xFB00 }, // f f -> U+FB00
{ 0x00660069, 0xFB01 }, // f i -> U+FB01
{ 0x0066006C, 0xFB02 }, // f l -> U+FB02
{ 0xFB000069, 0xFB03 }, // U+FB00 i -> U+FB03
{ 0xFB00006C, 0xFB04 }, // U+FB00 l -> U+FB04
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};
static const EpdFontData ubuntu_10_bold = {
ubuntu_10_boldBitmaps,
ubuntu_10_boldGlyphs,
ubuntu_10_boldIntervals,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
39,
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
24,
20,
-4,
false,
perf: Reduce overall flash usage by 30.7% by compressing built-in fonts (#831) ## Summary **What is the goal of this PR?** Compress reader font bitmaps to reduce flash usage by 30.7%. **What changes are included?** - New `EpdFontGroup` struct and extended `EpdFontData` with `groups`/`groupCount` fields - `--compress` flag in `fontconvert.py`: groups glyphs (ASCII base group + groups of 8) and compresses each with raw DEFLATE - `FontDecompressor` class with 4-slot LRU cache for on-demand decompression during rendering - `GfxRenderer` transparently routes bitmap access through `getGlyphBitmap()` (compressed or direct flash) - Uses `uzlib` for decompression with minimal heap overhead. - 48 reader fonts (Bookerly, NotoSans 12-18pt, OpenDyslexic) regenerated with compression; 5 UI fonts unchanged - Round-trip verification script (`verify_compression.py`) runs as part of font generation ## Additional Context ## Flash & RAM | | baseline | font-compression | Difference | |--|--------|-----------------|------------| | Flash (ELF) | 6,302,476 B (96.2%) | 4,365,022 B (66.6%) | -1,937,454 B (-30.7%) | | firmware.bin | 6,468,192 B | 4,531,008 B | -1,937,184 B (-29.9%) | | RAM | 101,700 B (31.0%) | 103,076 B (31.5%) | +1,376 B (+0.5%) | ## Script-Based Grouping (Cold Cache) Comparison of uncompressed baseline vs script-based group compression (4-slot LRU cache, cleared each page). Glyphs are grouped by Unicode block (ASCII, Latin-1, Latin Extended-A, Combining Marks, Cyrillic, General Punctuation, etc.) instead of sequential groups of 8. ### Render Time | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Median** | 414.9 ms | 431.6 ms | +16.7 ms (+4.0%) | | **Pages** | 37 | 37 | | ### Memory Usage | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Heap free (median)** | 187.0 KB | 176.3 KB | -10.7 KB | | **Heap free (min)** | 186.0 KB | 166.5 KB | -19.5 KB | | **Largest block (median)** | 148.0 KB | 128.0 KB | -20.0 KB | | **Largest block (min)** | 148.0 KB | 120.0 KB | -28.0 KB | ### Cache Effectiveness | | Misses/page | Hit rate | |---|---|---| | **Compressed (cold cache)** | 2.1 | 99.85% | ------ ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES**_ Implementation was done by Claude Code (Opus 4.6) based on a plan developed collaboratively. All generated font headers were verified with an automated round-trip decompression test. The firmware was compiled successfully but has not yet been tested on-device. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:30:15 +11:00
nullptr,
0,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
ubuntu_10_boldKernLeftClasses,
ubuntu_10_boldKernRightClasses,
ubuntu_10_boldKernMatrix,
462,
435,
131,
114,
ubuntu_10_boldLigaturePairs,
5,
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};