diff --git a/README.md b/README.md index fb2e664..b6a47e0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,20 @@ -# Watchy +# Watchy - Fully Open Source E-Paper Watch -![Watchy](extras/Watchy.jpg) +![Watchy](https://watchy.sqfmi.com/img/watchy_render.png) -[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UD3CRTDKHHPT8) +Visit [**https://watchy.sqfmi.com**](https://watchy.sqfmi.com) for documentation, hardware design files, and more! ## Setup 1. In the Arduino IDE Boards Manager, install support for the ESP32. You can find instructions here: https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md -2. Install the following libraries: - * [DS3232RTC](https://github.com/JChristensen/DS3232RTC) - * [GxEPD](https://github.com/ZinggJM/GxEPD) - * [Watchy](https://github.com/sqfmi/Watchy) (This library) +2. Install this library (search for **Watchy** in the library manager), and any other depdencies when prompted 3. Check out the examples under ```Examples``` -> ```Watchy``` 4. Compile & Upload with these board settings: - * Board: "ESP32 Wrover Module" + * Board: "ESP32 Dev Module" + * Partition Scheme: "Minimal SPIFFS" * All Other Settings: leave to default - * You may have to install the [CP2104 USB to Serial drivers](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) if the port is not automatically detected - * Have Fun! :) + +You may also have to install the [CP2104 USB to Serial drivers](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) if the port is not automatically detected + +### Have Fun! :) -Looking for Watchy hardware details? Go here https://github.com/sqfmi/Watchy-Hardware diff --git a/examples/WatchFaces/7_SEG/7_SEG.ino b/examples/WatchFaces/7_SEG/7_SEG.ino new file mode 100644 index 0000000..37c2e1d --- /dev/null +++ b/examples/WatchFaces/7_SEG/7_SEG.ino @@ -0,0 +1,12 @@ +#include "Watchy_7_SEG.h" + +Watchy7SEG watchy; + +void setup(){ + watchy.init(); +} + +void loop(){} + + + diff --git a/examples/WatchFaces/7_SEG/DSEG7_Classic_Bold_25.h b/examples/WatchFaces/7_SEG/DSEG7_Classic_Bold_25.h new file mode 100644 index 0000000..aab0b1a --- /dev/null +++ b/examples/WatchFaces/7_SEG/DSEG7_Classic_Bold_25.h @@ -0,0 +1,199 @@ +// Created by http://oleddisplay.squix.ch/ Consider a donation +// In case of problems make sure that you are using the font file with the correct version! +const uint8_t DSEG7_Classic_Bold_25Bitmaps[] PROGMEM = { + + // Bitmap Data: + 0x00, // ' ' + 0x00, // '!' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '"' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '#' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '$' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '%' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '&' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ''' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '(' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ')' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '*' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '+' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ',' + 0x7F,0xE7,0xFF,0x9F,0xF8, // '-' + 0x67,0x98, // '.' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '/' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDC,0x00,0x60,0x00,0x07,0x00,0x1B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xFF,0xEC,0xFF,0xFA,0x3F,0xFE,0x00, // '0' + 0x26,0xEE,0xEE,0xEE,0xEE,0x60,0x6E,0xEE,0xEE,0xEE,0xE6,0x20, // '1' + 0x3F,0xFE,0x1F,0xFE,0x87,0xFE,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC3,0xFF,0x63,0xFF,0xC7,0xFF,0xC3,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xFF,0xE0,0xFF,0xF8,0x3F,0xFE,0x00, // '2' + 0xFF,0xF9,0xFF,0xE9,0xFF,0xB0,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x73,0xFF,0x6F,0xFF,0x0F,0xFD,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x9F,0xFB,0x7F,0xFA,0xFF,0xF8, // '3' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x81,0xFF,0xB0,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x18,0x00,0x04, // '4' + 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1F,0xFF,0x03,0xFF,0xC0,0xFF,0xD8,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x7F,0xEC,0x7F,0xFA,0x3F,0xFE,0x00, // '5' + 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1F,0xFF,0x03,0xFF,0xC7,0xFF,0xDB,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xFF,0xEC,0xFF,0xFA,0x3F,0xFE,0x00, // '6' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDC,0x00,0x60,0x00,0x00,0x00,0x18,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x0C,0x00,0x02, // '7' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC7,0xFF,0xDB,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xFF,0xEC,0xFF,0xFA,0x3F,0xFE,0x00, // '8' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC0,0xFF,0xD8,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x7F,0xEC,0x7F,0xFA,0x3F,0xFE,0x00, // '9' + 0x4E,0xE0,0x00,0x00,0x00,0x4E,0xE4, // ':' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ';' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '<' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '=' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '>' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '?' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '@' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC7,0xFF,0xDB,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0x80,0x0C,0x80,0x02, // 'A' + 0x40,0x00,0x70,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3F,0xFE,0x07,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'B' + 0x1F,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'C' + 0x00,0x01,0x00,0x01,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x87,0xFE,0xC7,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'D' + 0x3F,0xFE,0x7F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'E' + 0x3F,0xFE,0x7F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xE0,0x00,0x40,0x00, // 'F' + 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1C,0x00,0x00,0x00,0x07,0x00,0x1B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xFF,0xEC,0xFF,0xFA,0x3F,0xFE,0x00, // 'G' + 0x40,0x00,0x70,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3F,0xFE,0x07,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x00,0x19,0x00,0x04, // 'H' + 0x6E,0xEE,0xEE,0xEE,0xE6,0x20, // 'I' + 0x00,0x01,0x00,0x01,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x00,0xC0,0x00,0x0E,0x00,0x37,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'J' + 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1F,0xFF,0x03,0xFF,0xC7,0xFF,0xDB,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0x80,0x0C,0x80,0x02, // 'K' + 0x40,0x00,0xE0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'L' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDC,0x00,0x60,0x00,0x07,0x00,0x1B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0x80,0x0C,0x80,0x02, // 'M' + 0x1F,0xF8,0x1F,0xFE,0x3F,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDC,0x00,0x64,0x00,0x10, // 'N' + 0x1F,0xF8,0x1F,0xFE,0x3F,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x67,0xFF,0xD1,0xFF,0xF0, // 'O' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC7,0xFF,0xC3,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0x80,0x00,0x80,0x00, // 'P' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC0,0xFF,0xD8,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x0C,0x00,0x02, // 'Q' + 0x1F,0xF8,0x7F,0xFB,0xFF,0xE7,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x78,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x00,0x04,0x00,0x00, // 'R' + 0x40,0x00,0x70,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3F,0xFE,0x07,0xFF,0x81,0xFF,0xB0,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0xFF,0xD8,0xFF,0xF4,0x7F,0xFC, // 'S' + 0x40,0x00,0xE0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'T' + 0xE0,0x03,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x7F,0xFD,0x9F,0xFF,0x47,0xFF,0xC0, // 'U' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xB8,0x00,0xC0,0x00,0x0E,0x00,0x37,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'V' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'W' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x00,0x19,0x00,0x04, // 'X' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x81,0xFF,0xB0,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0xFF,0xD8,0xFF,0xF4,0x7F,0xFC, // 'Y' + 0x3F,0xFE,0x1F,0xFE,0x87,0xFE,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0x60,0x00,0x07,0x00,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xFF,0xE0,0xFF,0xF8,0x3F,0xFE,0x00, // 'Z' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '[' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '\' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ']' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '^' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '_' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '`' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC7,0xFF,0xDB,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0x80,0x0C,0x80,0x02, // 'a' + 0x40,0x00,0x70,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3F,0xFE,0x07,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'b' + 0x1F,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'c' + 0x00,0x01,0x00,0x01,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x87,0xFE,0xC7,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'd' + 0x3F,0xFE,0x7F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'e' + 0x3F,0xFE,0x7F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xE0,0x00,0x40,0x00, // 'f' + 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1C,0x00,0x00,0x00,0x07,0x00,0x1B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xFF,0xEC,0xFF,0xFA,0x3F,0xFE,0x00, // 'g' + 0x40,0x00,0x70,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3F,0xFE,0x07,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x00,0x19,0x00,0x04, // 'h' + 0x6E,0xEE,0xEE,0xEE,0xE6,0x20, // 'i' + 0x00,0x01,0x00,0x01,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x00,0xC0,0x00,0x0E,0x00,0x37,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'j' + 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1F,0xFF,0x03,0xFF,0xC7,0xFF,0xDB,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0x80,0x0C,0x80,0x02, // 'k' + 0x40,0x00,0xE0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 'l' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDC,0x00,0x60,0x00,0x07,0x00,0x1B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0x80,0x0C,0x80,0x02, // 'm' + 0x1F,0xF8,0x1F,0xFE,0x3F,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDC,0x00,0x64,0x00,0x10, // 'n' + 0x1F,0xF8,0x1F,0xFE,0x3F,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x67,0xFF,0xD1,0xFF,0xF0, // 'o' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC7,0xFF,0xC3,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0x80,0x00,0x80,0x00, // 'p' + 0x3F,0xFE,0x3F,0xFE,0xBF,0xFE,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDF,0xFF,0x63,0xFF,0xC0,0xFF,0xD8,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x0C,0x00,0x02, // 'q' + 0x1F,0xF8,0x7F,0xFB,0xFF,0xE7,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x78,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x00,0x04,0x00,0x00, // 'r' + 0x40,0x00,0x70,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3F,0xFE,0x07,0xFF,0x81,0xFF,0xB0,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0xFF,0xD8,0xFF,0xF4,0x7F,0xFC, // 's' + 0x40,0x00,0xE0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x3F,0xFC,0xFF,0xF8,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xF0,0x00,0xFF,0xF8,0x7F,0xFC,0x3F,0xFE, // 't' + 0xE0,0x03,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x7F,0xFD,0x9F,0xFF,0x47,0xFF,0xC0, // 'u' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xB8,0x00,0xC0,0x00,0x0E,0x00,0x37,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'v' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0xFF,0xD9,0xFF,0xF4,0x7F,0xFC, // 'w' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x8F,0xFF,0xB7,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x00,0x19,0x00,0x04, // 'x' + 0x40,0x01,0x70,0x01,0xBC,0x01,0xDE,0x00,0xEF,0x00,0x77,0x80,0x3B,0xC0,0x1D,0xE0,0x0E,0xF0,0x07,0x78,0x03,0xBF,0xFE,0xC7,0xFF,0x81,0xFF,0xB0,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0xFF,0xD8,0xFF,0xF4,0x7F,0xFC, // 'y' + 0x3F,0xFE,0x1F,0xFE,0x87,0xFE,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0x60,0x00,0x07,0x00,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0x78,0x00,0x3C,0x00,0x1E,0x00,0x0F,0x00,0x07,0x80,0x03,0xFF,0xE0,0xFF,0xF8,0x3F,0xFE,0x00, // 'z' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '{' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '|' + 0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE // '}' +}; +const GFXglyph DSEG7_Classic_Bold_25Glyphs[] PROGMEM = { +// bitmapOffset, width, height, xAdvance, xOffset, yOffset + { 0, 1, 1, 6, 0, 0 }, // ' ' + { 1, 1, 1, 21, 0, 0 }, // '!' + { 2, 8, 17, 10, 1, -17 }, // '"' + { 19, 8, 17, 10, 1, -17 }, // '#' + { 36, 8, 17, 10, 1, -17 }, // '$' + { 53, 8, 17, 10, 1, -17 }, // '%' + { 70, 8, 17, 10, 1, -17 }, // '&' + { 87, 8, 17, 10, 1, -17 }, // ''' + { 104, 8, 17, 10, 1, -17 }, // '(' + { 121, 8, 17, 10, 1, -17 }, // ')' + { 138, 8, 17, 10, 1, -17 }, // '*' + { 155, 8, 17, 10, 1, -17 }, // '+' + { 172, 8, 17, 10, 1, -17 }, // ',' + { 189, 13, 3, 21, 4, -14 }, // '-' + { 194, 5, 3, 1, -2, -3 }, // '.' + { 196, 8, 17, 10, 1, -17 }, // '/' + { 213, 17, 25, 21, 2, -25 }, // '0' + { 267, 4, 23, 21, 15, -24 }, // '1' + { 279, 17, 25, 21, 2, -25 }, // '2' + { 333, 15, 25, 21, 4, -25 }, // '3' + { 380, 17, 23, 21, 2, -24 }, // '4' + { 429, 17, 25, 21, 2, -25 }, // '5' + { 483, 17, 25, 21, 2, -25 }, // '6' + { 537, 17, 24, 21, 2, -25 }, // '7' + { 588, 17, 25, 21, 2, -25 }, // '8' + { 642, 17, 25, 21, 2, -25 }, // '9' + { 696, 4, 14, 6, 1, -19 }, // ':' + { 703, 8, 17, 10, 1, -17 }, // ';' + { 720, 8, 17, 10, 1, -17 }, // '<' + { 737, 8, 17, 10, 1, -17 }, // '=' + { 754, 8, 17, 10, 1, -17 }, // '>' + { 771, 8, 17, 10, 1, -17 }, // '?' + { 788, 8, 17, 10, 1, -17 }, // '@' + { 805, 17, 24, 21, 2, -25 }, // 'A' + { 856, 17, 24, 21, 2, -24 }, // 'B' + { 907, 16, 14, 21, 2, -14 }, // 'C' + { 935, 17, 24, 21, 2, -24 }, // 'D' + { 986, 16, 25, 21, 2, -25 }, // 'E' + { 1036, 16, 24, 21, 2, -25 }, // 'F' + { 1084, 17, 25, 21, 2, -25 }, // 'G' + { 1138, 17, 23, 21, 2, -24 }, // 'H' + { 1187, 4, 11, 21, 15, -12 }, // 'I' + { 1193, 17, 24, 21, 2, -24 }, // 'J' + { 1244, 17, 24, 21, 2, -25 }, // 'K' + { 1295, 16, 24, 21, 2, -24 }, // 'L' + { 1343, 17, 24, 21, 2, -25 }, // 'M' + { 1394, 17, 13, 21, 2, -14 }, // 'N' + { 1422, 17, 14, 21, 2, -14 }, // 'O' + { 1452, 17, 24, 21, 2, -25 }, // 'P' + { 1503, 17, 24, 21, 2, -25 }, // 'Q' + { 1554, 15, 13, 21, 2, -14 }, // 'R' + { 1579, 17, 24, 21, 2, -24 }, // 'S' + { 1630, 16, 24, 21, 2, -24 }, // 'T' + { 1678, 17, 12, 21, 2, -12 }, // 'U' + { 1704, 17, 24, 21, 2, -24 }, // 'V' + { 1755, 17, 24, 21, 2, -24 }, // 'W' + { 1806, 17, 23, 21, 2, -24 }, // 'X' + { 1855, 17, 24, 21, 2, -24 }, // 'Y' + { 1906, 17, 25, 21, 2, -25 }, // 'Z' + { 1960, 8, 17, 10, 1, -17 }, // '[' + { 1977, 8, 17, 10, 1, -17 }, // '\' + { 1994, 8, 17, 10, 1, -17 }, // ']' + { 2011, 8, 17, 10, 1, -17 }, // '^' + { 2028, 8, 17, 10, 1, -17 }, // '_' + { 2045, 8, 17, 10, 1, -17 }, // '`' + { 2062, 17, 24, 21, 2, -25 }, // 'a' + { 2113, 17, 24, 21, 2, -24 }, // 'b' + { 2164, 16, 14, 21, 2, -14 }, // 'c' + { 2192, 17, 24, 21, 2, -24 }, // 'd' + { 2243, 16, 25, 21, 2, -25 }, // 'e' + { 2293, 16, 24, 21, 2, -25 }, // 'f' + { 2341, 17, 25, 21, 2, -25 }, // 'g' + { 2395, 17, 23, 21, 2, -24 }, // 'h' + { 2444, 4, 11, 21, 15, -12 }, // 'i' + { 2450, 17, 24, 21, 2, -24 }, // 'j' + { 2501, 17, 24, 21, 2, -25 }, // 'k' + { 2552, 16, 24, 21, 2, -24 }, // 'l' + { 2600, 17, 24, 21, 2, -25 }, // 'm' + { 2651, 17, 13, 21, 2, -14 }, // 'n' + { 2679, 17, 14, 21, 2, -14 }, // 'o' + { 2709, 17, 24, 21, 2, -25 }, // 'p' + { 2760, 17, 24, 21, 2, -25 }, // 'q' + { 2811, 15, 13, 21, 2, -14 }, // 'r' + { 2836, 17, 24, 21, 2, -24 }, // 's' + { 2887, 16, 24, 21, 2, -24 }, // 't' + { 2935, 17, 12, 21, 2, -12 }, // 'u' + { 2961, 17, 24, 21, 2, -24 }, // 'v' + { 3012, 17, 24, 21, 2, -24 }, // 'w' + { 3063, 17, 23, 21, 2, -24 }, // 'x' + { 3112, 17, 24, 21, 2, -24 }, // 'y' + { 3163, 17, 25, 21, 2, -25 }, // 'z' + { 3217, 8, 17, 10, 1, -17 }, // '{' + { 3234, 8, 17, 10, 1, -17 }, // '|' + { 3251, 8, 17, 10, 1, -17 } // '}' +}; +const GFXfont DSEG7_Classic_Bold_25 PROGMEM = { +(uint8_t *)DSEG7_Classic_Bold_25Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_25Glyphs,0x20, 0x7E, 28}; \ No newline at end of file diff --git a/examples/WatchFaces/7_SEG/DSEG7_Classic_Regular_15.h b/examples/WatchFaces/7_SEG/DSEG7_Classic_Regular_15.h new file mode 100644 index 0000000..505ec5f --- /dev/null +++ b/examples/WatchFaces/7_SEG/DSEG7_Classic_Regular_15.h @@ -0,0 +1,199 @@ +// Created by http://oleddisplay.squix.ch/ Consider a donation +// In case of problems make sure that you are using the font file with the correct version! +const uint8_t DSEG7_Classic_Regular_15Bitmaps[] PROGMEM = { + + // Bitmap Data: + 0x00, // ' ' + 0x00, // '!' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '"' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '#' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '$' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '%' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '&' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // ''' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '(' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // ')' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '*' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '+' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // ',' + 0xFF,0x00, // '-' + 0xD8, // '.' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '/' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30,0x00,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // '0' + 0xDB,0x6D,0x86,0xDB,0x6C, // '1' + 0x7F,0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x33,0xFC,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE0, // '2' + 0xFF,0x00,0x60,0x18,0x06,0x01,0x80,0x60,0x1B,0xFC,0x01,0x80,0x60,0x18,0x06,0x01,0x80,0x6F,0xF0, // '3' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C, // '4' + 0x7F,0x98,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x03,0xFC,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x9F,0xE0, // '5' + 0x7F,0x98,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x03,0xFC,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // '6' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30,0x00,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80, // '7' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // '8' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x9F,0xE0, // '9' + 0xA0,0x0A, // ':' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // ';' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '<' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '=' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '>' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '?' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '@' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, // 'A' + 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'B' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x01,0xFE, // 'C' + 0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x9F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'D' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x01,0xFE,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x07,0xF8, // 'E' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x01,0xFE,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x00, // 'F' + 0x7F,0x98,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x00,0x00,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // 'G' + 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C, // 'H' + 0xDB,0x6D,0x80, // 'I' + 0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x06,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'J' + 0x7F,0x98,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x03,0xFC,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, // 'K' + 0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x00,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x1F,0xE0, // 'L' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30,0x00,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, // 'M' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30, // 'N' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC, // 'O' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x00, // 'P' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80, // 'Q' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x00, // 'R' + 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE0,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0xFF,0x00, // 'S' + 0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x07,0xFB,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x1F,0xE0, // 'T' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // 'U' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80,0x06,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'V' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'W' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C, // 'X' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0xFF,0x00, // 'Y' + 0x7F,0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE0, // 'Z' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '[' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '\' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // ']' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '^' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '_' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '`' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, // 'a' + 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'b' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x01,0xFE, // 'c' + 0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x9F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'd' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x01,0xFE,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x07,0xF8, // 'e' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x01,0xFE,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x00, // 'f' + 0x7F,0x98,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x00,0x00,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // 'g' + 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C, // 'h' + 0xDB,0x6D,0x80, // 'i' + 0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x06,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'j' + 0x7F,0x98,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x03,0xFC,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, // 'k' + 0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x00,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x1F,0xE0, // 'l' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30,0x00,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, // 'm' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30, // 'n' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC, // 'o' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x00, // 'p' + 0x7F,0x98,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x33,0xFC,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80, // 'q' + 0x7F,0xB0,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x00, // 'r' + 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE0,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0xFF,0x00, // 's' + 0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x07,0xFB,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x1F,0xE0, // 't' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0, // 'u' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80,0x06,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'v' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C,0xFF,0x00, // 'w' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE6,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0C, // 'x' + 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x9F,0xE0,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0xFF,0x00, // 'y' + 0x7F,0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x1F,0xE0, // 'z' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '{' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC, // '|' + 0xF4,0xA5,0x29,0x4A,0x52,0x94,0xBC // '}' +}; +const GFXglyph DSEG7_Classic_Regular_15Glyphs[] PROGMEM = { +// bitmapOffset, width, height, xAdvance, xOffset, yOffset + { 0, 1, 1, 4, 0, 0 }, // ' ' + { 1, 1, 1, 13, 0, 0 }, // '!' + { 2, 5, 11, 6, 1, -11 }, // '"' + { 9, 5, 11, 6, 1, -11 }, // '#' + { 16, 5, 11, 6, 1, -11 }, // '$' + { 23, 5, 11, 6, 1, -11 }, // '%' + { 30, 5, 11, 6, 1, -11 }, // '&' + { 37, 5, 11, 6, 1, -11 }, // ''' + { 44, 5, 11, 6, 1, -11 }, // '(' + { 51, 5, 11, 6, 1, -11 }, // ')' + { 58, 5, 11, 6, 1, -11 }, // '*' + { 65, 5, 11, 6, 1, -11 }, // '+' + { 72, 5, 11, 6, 1, -11 }, // ',' + { 79, 9, 1, 13, 2, -8 }, // '-' + { 81, 3, 2, 1, -1, -2 }, // '.' + { 82, 5, 11, 6, 1, -11 }, // '/' + { 89, 11, 15, 13, 1, -15 }, // '0' + { 110, 3, 13, 13, 9, -14 }, // '1' + { 115, 11, 15, 13, 1, -15 }, // '2' + { 136, 10, 15, 13, 2, -15 }, // '3' + { 155, 11, 13, 13, 1, -14 }, // '4' + { 173, 11, 15, 13, 1, -15 }, // '5' + { 194, 11, 15, 13, 1, -15 }, // '6' + { 215, 11, 14, 13, 1, -15 }, // '7' + { 235, 11, 15, 13, 1, -15 }, // '8' + { 256, 11, 15, 13, 1, -15 }, // '9' + { 277, 2, 8, 4, 1, -11 }, // ':' + { 279, 5, 11, 6, 1, -11 }, // ';' + { 286, 5, 11, 6, 1, -11 }, // '<' + { 293, 5, 11, 6, 1, -11 }, // '=' + { 300, 5, 11, 6, 1, -11 }, // '>' + { 307, 5, 11, 6, 1, -11 }, // '?' + { 314, 5, 11, 6, 1, -11 }, // '@' + { 321, 11, 14, 13, 1, -15 }, // 'A' + { 341, 11, 14, 13, 1, -14 }, // 'B' + { 361, 10, 8, 13, 1, -8 }, // 'C' + { 371, 11, 14, 13, 1, -14 }, // 'D' + { 391, 10, 15, 13, 1, -15 }, // 'E' + { 410, 10, 14, 13, 1, -15 }, // 'F' + { 428, 11, 15, 13, 1, -15 }, // 'G' + { 449, 11, 13, 13, 1, -14 }, // 'H' + { 467, 3, 6, 13, 9, -7 }, // 'I' + { 470, 11, 14, 13, 1, -14 }, // 'J' + { 490, 11, 14, 13, 1, -15 }, // 'K' + { 510, 10, 14, 13, 1, -14 }, // 'L' + { 528, 11, 14, 13, 1, -15 }, // 'M' + { 548, 11, 7, 13, 1, -8 }, // 'N' + { 558, 11, 8, 13, 1, -8 }, // 'O' + { 569, 11, 14, 13, 1, -15 }, // 'P' + { 589, 11, 14, 13, 1, -15 }, // 'Q' + { 609, 10, 7, 13, 1, -8 }, // 'R' + { 618, 11, 14, 13, 1, -14 }, // 'S' + { 638, 10, 14, 13, 1, -14 }, // 'T' + { 656, 11, 7, 13, 1, -7 }, // 'U' + { 666, 11, 14, 13, 1, -14 }, // 'V' + { 686, 11, 14, 13, 1, -14 }, // 'W' + { 706, 11, 13, 13, 1, -14 }, // 'X' + { 724, 11, 14, 13, 1, -14 }, // 'Y' + { 744, 11, 15, 13, 1, -15 }, // 'Z' + { 765, 5, 11, 6, 1, -11 }, // '[' + { 772, 5, 11, 6, 1, -11 }, // '\' + { 779, 5, 11, 6, 1, -11 }, // ']' + { 786, 5, 11, 6, 1, -11 }, // '^' + { 793, 5, 11, 6, 1, -11 }, // '_' + { 800, 5, 11, 6, 1, -11 }, // '`' + { 807, 11, 14, 13, 1, -15 }, // 'a' + { 827, 11, 14, 13, 1, -14 }, // 'b' + { 847, 10, 8, 13, 1, -8 }, // 'c' + { 857, 11, 14, 13, 1, -14 }, // 'd' + { 877, 10, 15, 13, 1, -15 }, // 'e' + { 896, 10, 14, 13, 1, -15 }, // 'f' + { 914, 11, 15, 13, 1, -15 }, // 'g' + { 935, 11, 13, 13, 1, -14 }, // 'h' + { 953, 3, 6, 13, 9, -7 }, // 'i' + { 956, 11, 14, 13, 1, -14 }, // 'j' + { 976, 11, 14, 13, 1, -15 }, // 'k' + { 996, 10, 14, 13, 1, -14 }, // 'l' + { 1014, 11, 14, 13, 1, -15 }, // 'm' + { 1034, 11, 7, 13, 1, -8 }, // 'n' + { 1044, 11, 8, 13, 1, -8 }, // 'o' + { 1055, 11, 14, 13, 1, -15 }, // 'p' + { 1075, 11, 14, 13, 1, -15 }, // 'q' + { 1095, 10, 7, 13, 1, -8 }, // 'r' + { 1104, 11, 14, 13, 1, -14 }, // 's' + { 1124, 10, 14, 13, 1, -14 }, // 't' + { 1142, 11, 7, 13, 1, -7 }, // 'u' + { 1152, 11, 14, 13, 1, -14 }, // 'v' + { 1172, 11, 14, 13, 1, -14 }, // 'w' + { 1192, 11, 13, 13, 1, -14 }, // 'x' + { 1210, 11, 14, 13, 1, -14 }, // 'y' + { 1230, 11, 15, 13, 1, -15 }, // 'z' + { 1251, 5, 11, 6, 1, -11 }, // '{' + { 1258, 5, 11, 6, 1, -11 }, // '|' + { 1265, 5, 11, 6, 1, -11 } // '}' +}; +const GFXfont DSEG7_Classic_Regular_15 PROGMEM = { +(uint8_t *)DSEG7_Classic_Regular_15Bitmaps,(GFXglyph *)DSEG7_Classic_Regular_15Glyphs,0x20, 0x7E, 17}; \ No newline at end of file diff --git a/examples/WatchFaces/7_SEG/DSEG7_Classic_Regular_39.h b/examples/WatchFaces/7_SEG/DSEG7_Classic_Regular_39.h new file mode 100644 index 0000000..9733569 --- /dev/null +++ b/examples/WatchFaces/7_SEG/DSEG7_Classic_Regular_39.h @@ -0,0 +1,199 @@ +// Created by http://oleddisplay.squix.ch/ Consider a donation +// In case of problems make sure that you are using the font file with the correct version! +const uint8_t DSEG7_Classic_Regular_39Bitmaps[] PROGMEM = { + + // Bitmap Data: + 0x00, // ' ' + 0x00, // '!' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '"' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '#' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '$' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '%' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '&' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // ''' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '(' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // ')' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '*' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '+' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // ',' + 0x7F,0xFF,0xE7,0xFF,0xFF,0x9F,0xFF,0xF8, // '-' + 0x67,0xBD,0xE6,0x00, // '.' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '/' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x36,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDD,0xFF,0xFE,0xED,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // '0' + 0x33,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xCE,0x30,0x0C,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xDE,0xF3,0x8C, // '1' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC1,0xFF,0xFE,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x03,0x87,0xFF,0xFE,0xC7,0xFF,0xFF,0x89,0xFF,0xFF,0x86,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1D,0xFF,0xFE,0x0D,0xFF,0xFF,0x81,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // '2' + 0xFF,0xFF,0xF1,0xFF,0xFF,0xE1,0xFF,0xFF,0xB1,0xFF,0xFE,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x39,0xFF,0xFF,0xB7,0xFF,0xFF,0x87,0xFF,0xFE,0xC0,0x00,0x03,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF1,0xFF,0xFE,0xE7,0xFF,0xFE,0xDF,0xFF,0xFE,0x3F,0xFF,0xFC,0x00, // '3' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x03,0x80,0x00,0x00,0xC0, // '4' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0x1D,0xFF,0xFE,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x37,0xFF,0xFE,0x07,0xFF,0xFF,0x81,0xFF,0xFF,0xB0,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC1,0xFF,0xFE,0xE1,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // '5' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0x1D,0xFF,0xFE,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x37,0xFF,0xFE,0x07,0xFF,0xFF,0x89,0xFF,0xFF,0xB6,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDD,0xFF,0xFE,0xED,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // '6' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x00,0xE0,0x00,0x00,0x30, // '7' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x89,0xFF,0xFF,0xB6,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDD,0xFF,0xFE,0xED,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // '8' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x81,0xFF,0xFF,0xB0,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC1,0xFF,0xFE,0xE1,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // '9' + 0x79,0xE7,0x9E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x79,0xE7,0x9E, // ':' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // ';' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '<' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '=' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '>' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '?' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '@' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x89,0xFF,0xFF,0xB6,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x00,0xEC,0x00,0x00,0x30, // 'A' + 0xC0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xDF,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'B' + 0x1F,0xFF,0xF8,0x7F,0xFF,0xFA,0x7F,0xFF,0xE6,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xDF,0xFF,0xE3,0x7F,0xFF,0xE1,0xFF,0xFF,0xE3,0xFF,0xFF,0xC0, // 'C' + 0x00,0x00,0x03,0x00,0x00,0x03,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x0E,0x1F,0xFF,0xFB,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'D' + 0x3F,0xFF,0xFC,0x7F,0xFF,0xFB,0x7F,0xFF,0xE7,0x7F,0xFF,0x8E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x7F,0xFF,0xE1,0xFF,0xFF,0xE9,0xFF,0xFF,0x98,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x7F,0xFF,0x8D,0xFF,0xFF,0x87,0xFF,0xFF,0x8F,0xFF,0xFF,0x00, // 'E' + 0x3F,0xFF,0xFC,0x7F,0xFF,0xFB,0x7F,0xFF,0xE7,0x7F,0xFF,0x8E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x7F,0xFF,0xE1,0xFF,0xFF,0xE9,0xFF,0xFF,0x98,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0C,0x00,0x00,0x00, // 'F' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0x1D,0xFF,0xFE,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x36,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDD,0xFF,0xFE,0xED,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // 'G' + 0xC0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xDF,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0, // 'H' + 0x33,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xCE,0x30, // 'I' + 0x00,0x00,0x03,0x00,0x00,0x03,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x0E,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'J' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0x1D,0xFF,0xFE,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x37,0xFF,0xFE,0x07,0xFF,0xFF,0x89,0xFF,0xFF,0xB6,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x00,0xEC,0x00,0x00,0x30, // 'K' + 0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xDF,0xFF,0xE3,0x7F,0xFF,0xE1,0xFF,0xFF,0xE3,0xFF,0xFF,0xC0, // 'L' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x36,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x00,0xEC,0x00,0x00,0x30, // 'M' + 0x1F,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0, // 'N' + 0x1F,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'O' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x89,0xFF,0xFF,0x86,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0C,0x00,0x00,0x00, // 'P' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x81,0xFF,0xFF,0xB0,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x00,0xE0,0x00,0x00,0x30, // 'Q' + 0x1F,0xFF,0xF8,0x7F,0xFF,0xFA,0x7F,0xFF,0xE6,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x00,0x00,0x00, // 'R' + 0xC0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xDF,0xFF,0xF8,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x07,0xFF,0xFB,0x87,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'S' + 0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xDF,0xFF,0xF8,0x7F,0xFF,0xFA,0x7F,0xFF,0xE6,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xDF,0xFF,0xE3,0x7F,0xFF,0xE1,0xFF,0xFF,0xE3,0xFF,0xFF,0xC0, // 'T' + 0x80,0x00,0x03,0x60,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xDF,0xFF,0xEE,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x0F,0xFF,0xFF,0x00, // 'U' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xC0,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'V' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'W' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0, // 'X' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x07,0xFF,0xFB,0x87,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'Y' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC1,0xFF,0xFE,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x03,0x80,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x06,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1D,0xFF,0xFE,0x0D,0xFF,0xFF,0x81,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // 'Z' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '[' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '\' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // ']' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '^' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '_' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '`' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x89,0xFF,0xFF,0xB6,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x00,0xEC,0x00,0x00,0x30, // 'a' + 0xC0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xDF,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'b' + 0x1F,0xFF,0xF8,0x7F,0xFF,0xFA,0x7F,0xFF,0xE6,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xDF,0xFF,0xE3,0x7F,0xFF,0xE1,0xFF,0xFF,0xE3,0xFF,0xFF,0xC0, // 'c' + 0x00,0x00,0x03,0x00,0x00,0x03,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x0E,0x1F,0xFF,0xFB,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'd' + 0x3F,0xFF,0xFC,0x7F,0xFF,0xFB,0x7F,0xFF,0xE7,0x7F,0xFF,0x8E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x7F,0xFF,0xE1,0xFF,0xFF,0xE9,0xFF,0xFF,0x98,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x7F,0xFF,0x8D,0xFF,0xFF,0x87,0xFF,0xFF,0x8F,0xFF,0xFF,0x00, // 'e' + 0x3F,0xFF,0xFC,0x7F,0xFF,0xFB,0x7F,0xFF,0xE7,0x7F,0xFF,0x8E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x7F,0xFF,0xE1,0xFF,0xFF,0xE9,0xFF,0xFF,0x98,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0C,0x00,0x00,0x00, // 'f' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0x1D,0xFF,0xFE,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x36,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDD,0xFF,0xFE,0xED,0xFF,0xFF,0xB1,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // 'g' + 0xC0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xDF,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0, // 'h' + 0x33,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xCE,0x30, // 'i' + 0x00,0x00,0x03,0x00,0x00,0x03,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x0E,0x00,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'j' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0x1D,0xFF,0xFE,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x37,0xFF,0xFE,0x07,0xFF,0xFF,0x89,0xFF,0xFF,0xB6,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x00,0xEC,0x00,0x00,0x30, // 'k' + 0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x06,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xDF,0xFF,0xE3,0x7F,0xFF,0xE1,0xFF,0xFF,0xE3,0xFF,0xFF,0xC0, // 'l' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x36,0x00,0x00,0x3B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x00,0xEC,0x00,0x00,0x30, // 'm' + 0x1F,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0, // 'n' + 0x1F,0xFF,0xF8,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'o' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x89,0xFF,0xFF,0x86,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0C,0x00,0x00,0x00, // 'p' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x37,0xFF,0xFE,0xDD,0xFF,0xFE,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x81,0xFF,0xFF,0xB0,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x00,0xE0,0x00,0x00,0x30, // 'q' + 0x1F,0xFF,0xF8,0x7F,0xFF,0xFA,0x7F,0xFF,0xE6,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x00,0x00,0x00, // 'r' + 0xC0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xDF,0xFF,0xF8,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x07,0xFF,0xFB,0x87,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 's' + 0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xDF,0xFF,0xF8,0x7F,0xFF,0xFA,0x7F,0xFF,0xE6,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xDF,0xFF,0xE3,0x7F,0xFF,0xE1,0xFF,0xFF,0xE3,0xFF,0xFF,0xC0, // 't' + 0x80,0x00,0x03,0x60,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xDF,0xFF,0xEE,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x0F,0xFF,0xFF,0x00, // 'u' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xC0,0x00,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'v' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x77,0xFF,0xFB,0xB7,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'w' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x27,0xFF,0xFE,0xD8,0x00,0x00,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x03,0xB0,0x00,0x00,0xC0, // 'x' + 0xC0,0x00,0x03,0x70,0x00,0x03,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x1E,0xE0,0x00,0x0F,0x70,0x00,0x07,0xB8,0x00,0x03,0xDC,0x00,0x01,0xEE,0x00,0x00,0xF7,0x00,0x00,0x7B,0x80,0x00,0x3D,0xC0,0x00,0x0E,0xDF,0xFF,0xFB,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x07,0xFF,0xFB,0x87,0xFF,0xFE,0xC7,0xFF,0xFF,0x83,0xFF,0xFF,0xC0, // 'y' + 0x3F,0xFF,0xFC,0x1F,0xFF,0xFE,0x07,0xFF,0xFE,0xC1,0xFF,0xFE,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x03,0x80,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x06,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x1D,0xFF,0xFE,0x0D,0xFF,0xFF,0x81,0xFF,0xFF,0xE0,0xFF,0xFF,0xF0, // 'z' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '{' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8, // '|' + 0xFF,0xD0,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x50,0x0A,0x01,0x40,0x28,0x05,0x00,0xA0,0x14,0x02,0x80,0x5F,0xF8 // '}' +}; +const GFXglyph DSEG7_Classic_Regular_39Glyphs[] PROGMEM = { +// bitmapOffset, width, height, xAdvance, xOffset, yOffset + { 0, 1, 1, 9, 0, 0 }, // ' ' + { 1, 1, 1, 33, 0, 0 }, // '!' + { 2, 11, 26, 15, 1, -26 }, // '"' + { 38, 11, 26, 15, 1, -26 }, // '#' + { 74, 11, 26, 15, 1, -26 }, // '$' + { 110, 11, 26, 15, 1, -26 }, // '%' + { 146, 11, 26, 15, 1, -26 }, // '&' + { 182, 11, 26, 15, 1, -26 }, // ''' + { 218, 11, 26, 15, 1, -26 }, // '(' + { 254, 11, 26, 15, 1, -26 }, // ')' + { 290, 11, 26, 15, 1, -26 }, // '*' + { 326, 11, 26, 15, 1, -26 }, // '+' + { 362, 11, 26, 15, 1, -26 }, // ',' + { 398, 21, 3, 33, 6, -21 }, // '-' + { 406, 5, 5, 1, -2, -5 }, // '.' + { 410, 11, 26, 15, 1, -26 }, // '/' + { 446, 25, 39, 33, 4, -39 }, // '0' + { 568, 5, 35, 33, 24, -37 }, // '1' + { 590, 25, 39, 33, 4, -39 }, // '2' + { 712, 23, 39, 33, 6, -39 }, // '3' + { 825, 25, 35, 33, 4, -37 }, // '4' + { 935, 25, 39, 33, 4, -39 }, // '5' + { 1057, 25, 39, 33, 4, -39 }, // '6' + { 1179, 25, 37, 33, 4, -39 }, // '7' + { 1295, 25, 39, 33, 4, -39 }, // '8' + { 1417, 25, 39, 33, 4, -39 }, // '9' + { 1539, 6, 20, 9, 1, -29 }, // ':' + { 1554, 11, 26, 15, 1, -26 }, // ';' + { 1590, 11, 26, 15, 1, -26 }, // '<' + { 1626, 11, 26, 15, 1, -26 }, // '=' + { 1662, 11, 26, 15, 1, -26 }, // '>' + { 1698, 11, 26, 15, 1, -26 }, // '?' + { 1734, 11, 26, 15, 1, -26 }, // '@' + { 1770, 25, 37, 33, 4, -39 }, // 'A' + { 1886, 25, 37, 33, 4, -37 }, // 'B' + { 2002, 23, 21, 33, 4, -21 }, // 'C' + { 2063, 25, 37, 33, 4, -37 }, // 'D' + { 2179, 23, 39, 33, 4, -39 }, // 'E' + { 2292, 23, 37, 33, 4, -39 }, // 'F' + { 2399, 25, 39, 33, 4, -39 }, // 'G' + { 2521, 25, 35, 33, 4, -37 }, // 'H' + { 2631, 5, 17, 33, 24, -19 }, // 'I' + { 2642, 25, 37, 33, 4, -37 }, // 'J' + { 2758, 25, 37, 33, 4, -39 }, // 'K' + { 2874, 23, 37, 33, 4, -37 }, // 'L' + { 2981, 25, 37, 33, 4, -39 }, // 'M' + { 3097, 25, 19, 33, 4, -21 }, // 'N' + { 3157, 25, 21, 33, 4, -21 }, // 'O' + { 3223, 25, 37, 33, 4, -39 }, // 'P' + { 3339, 25, 37, 33, 4, -39 }, // 'Q' + { 3455, 23, 19, 33, 4, -21 }, // 'R' + { 3510, 25, 37, 33, 4, -37 }, // 'S' + { 3626, 23, 37, 33, 4, -37 }, // 'T' + { 3733, 25, 19, 33, 4, -19 }, // 'U' + { 3793, 25, 37, 33, 4, -37 }, // 'V' + { 3909, 25, 37, 33, 4, -37 }, // 'W' + { 4025, 25, 35, 33, 4, -37 }, // 'X' + { 4135, 25, 37, 33, 4, -37 }, // 'Y' + { 4251, 25, 39, 33, 4, -39 }, // 'Z' + { 4373, 11, 26, 15, 1, -26 }, // '[' + { 4409, 11, 26, 15, 1, -26 }, // '\' + { 4445, 11, 26, 15, 1, -26 }, // ']' + { 4481, 11, 26, 15, 1, -26 }, // '^' + { 4517, 11, 26, 15, 1, -26 }, // '_' + { 4553, 11, 26, 15, 1, -26 }, // '`' + { 4589, 25, 37, 33, 4, -39 }, // 'a' + { 4705, 25, 37, 33, 4, -37 }, // 'b' + { 4821, 23, 21, 33, 4, -21 }, // 'c' + { 4882, 25, 37, 33, 4, -37 }, // 'd' + { 4998, 23, 39, 33, 4, -39 }, // 'e' + { 5111, 23, 37, 33, 4, -39 }, // 'f' + { 5218, 25, 39, 33, 4, -39 }, // 'g' + { 5340, 25, 35, 33, 4, -37 }, // 'h' + { 5450, 5, 17, 33, 24, -19 }, // 'i' + { 5461, 25, 37, 33, 4, -37 }, // 'j' + { 5577, 25, 37, 33, 4, -39 }, // 'k' + { 5693, 23, 37, 33, 4, -37 }, // 'l' + { 5800, 25, 37, 33, 4, -39 }, // 'm' + { 5916, 25, 19, 33, 4, -21 }, // 'n' + { 5976, 25, 21, 33, 4, -21 }, // 'o' + { 6042, 25, 37, 33, 4, -39 }, // 'p' + { 6158, 25, 37, 33, 4, -39 }, // 'q' + { 6274, 23, 19, 33, 4, -21 }, // 'r' + { 6329, 25, 37, 33, 4, -37 }, // 's' + { 6445, 23, 37, 33, 4, -37 }, // 't' + { 6552, 25, 19, 33, 4, -19 }, // 'u' + { 6612, 25, 37, 33, 4, -37 }, // 'v' + { 6728, 25, 37, 33, 4, -37 }, // 'w' + { 6844, 25, 35, 33, 4, -37 }, // 'x' + { 6954, 25, 37, 33, 4, -37 }, // 'y' + { 7070, 25, 39, 33, 4, -39 }, // 'z' + { 7192, 11, 26, 15, 1, -26 }, // '{' + { 7228, 11, 26, 15, 1, -26 }, // '|' + { 7264, 11, 26, 15, 1, -26 } // '}' +}; +const GFXfont DSEG7_Classic_Regular_39 PROGMEM = { +(uint8_t *)DSEG7_Classic_Regular_39Bitmaps,(GFXglyph *)DSEG7_Classic_Regular_39Glyphs,0x20, 0x7E, 43}; \ No newline at end of file diff --git a/examples/WatchFaces/7_SEG/Seven_Segment10pt7b.h b/examples/WatchFaces/7_SEG/Seven_Segment10pt7b.h new file mode 100644 index 0000000..851ddd5 --- /dev/null +++ b/examples/WatchFaces/7_SEG/Seven_Segment10pt7b.h @@ -0,0 +1,204 @@ +const uint8_t Seven_Segment10pt7bBitmaps[] PROGMEM = { + 0x00, 0xFF, 0xFC, 0xA0, 0x09, 0x05, 0x86, 0x9F, 0xF1, 0x47, 0xFC, 0xB0, + 0xD0, 0x48, 0x00, 0x10, 0x10, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7E, 0x10, 0x10, 0x00, 0x40, 0x04, + 0x70, 0x88, 0x88, 0x89, 0x08, 0xB0, 0x72, 0x00, 0x66, 0x04, 0x90, 0xC9, + 0x08, 0x91, 0x06, 0x30, 0x02, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE1, 0xF8, 0x02, 0x01, 0x00, + 0x81, 0x20, 0x80, 0x20, 0x10, 0x08, 0x12, 0x08, 0x02, 0x01, 0x00, 0x81, + 0x20, 0x80, 0x20, 0x10, 0x08, 0x12, 0x08, 0x02, 0x01, 0x00, 0x81, 0x20, + 0x80, 0x20, 0x10, 0x08, 0x12, 0x07, 0xE2, 0x01, 0x00, 0x7E, 0x20, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x61, 0x87, 0xF0, 0x7C, 0x21, + 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, 0x3C, 0xF0, 0x42, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x10, 0xF8, 0x21, 0x3E, 0xEF, 0xD4, 0x80, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x41, 0xF7, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x00, 0x60, 0xF8, 0x80, 0x01, 0x00, 0x80, 0xC0, 0x40, 0x60, 0x20, 0x30, + 0x00, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x04, 0x00, 0x7E, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0xFF, 0xFC, + 0x7E, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x7E, 0xF8, 0x10, 0x41, 0x04, 0x1F, 0x81, 0x04, 0x10, 0x41, 0x07, + 0xE0, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x7E, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0xF8, 0x10, 0x41, 0x04, 0x10, + 0x41, 0x04, 0x10, 0x41, 0x04, 0x10, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x7E, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7E, 0xCC, 0xFE, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x61, 0x87, 0xF0, 0x25, 0x25, + 0x24, 0x89, 0x22, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x91, 0x24, + 0x49, 0x29, 0x29, 0x00, 0x7E, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7E, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0x81, 0x81, 0x81, 0x8F, 0x91, + 0x91, 0x10, 0x91, 0x91, 0x8E, 0x80, 0x80, 0x7E, 0x7E, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, + 0x7E, 0x08, 0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0x81, 0xF0, 0x7E, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x7E, 0x7E, 0x08, 0x20, 0x82, 0x07, 0xE0, 0x82, 0x08, 0x20, 0x81, 0xF0, + 0x7E, 0x08, 0x20, 0x82, 0x07, 0xE0, 0x82, 0x08, 0x20, 0x82, 0x00, 0x7E, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x3E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0xFF, 0xFC, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x86, 0x8C, 0x98, 0xB0, + 0xA0, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x08, 0x20, + 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0x81, 0xF0, 0x7B, 0xD0, 0x86, 0x10, + 0xC2, 0x18, 0x43, 0x08, 0x61, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x40, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83, 0x7F, + 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x80, 0xB0, 0x98, 0x8C, 0x86, + 0x82, 0x81, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x7E, 0xF7, 0x84, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x40, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x66, 0x24, 0x24, + 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x21, 0x84, + 0x30, 0x86, 0x10, 0xC2, 0x18, 0x42, 0xF7, 0x80, 0x81, 0xC3, 0x42, 0x66, + 0x24, 0x24, 0x00, 0x00, 0x24, 0x24, 0x66, 0x42, 0xC3, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x7E, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7E, + 0xFE, 0x02, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x10, 0x30, 0x20, 0x60, 0x40, + 0x40, 0x7F, 0x7C, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, 0x3C, 0x80, + 0x60, 0x10, 0x04, 0x03, 0x00, 0x80, 0x40, 0x00, 0x0C, 0x03, 0x00, 0x80, + 0x60, 0x10, 0x0C, 0xF0, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, + 0x06, 0xC0, 0xE1, 0xEC, 0x00, 0xC0, 0xFF, 0xC0, 0xFE, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x86, 0x18, 0x61, 0x87, 0xF0, 0x7E, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x7E, + 0x08, 0x20, 0x82, 0x08, 0x20, 0x82, 0x08, 0x20, 0x81, 0xF0, 0x7E, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, + 0x7E, 0x08, 0x20, 0x82, 0x07, 0xE0, 0x82, 0x08, 0x20, 0x81, 0xF0, 0x7E, + 0x08, 0x20, 0x82, 0x07, 0xE0, 0x82, 0x08, 0x20, 0x82, 0x00, 0x7E, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x3E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0xFF, 0xFC, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x86, 0x8C, 0x98, 0xB0, 0xA0, + 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x08, 0x20, 0x82, + 0x08, 0x20, 0x82, 0x08, 0x20, 0x81, 0xF0, 0x7B, 0xD0, 0x86, 0x10, 0xC2, + 0x18, 0x43, 0x08, 0x61, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x40, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x83, 0x7F, 0x7E, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x80, 0xB0, 0x98, 0x8C, 0x86, 0x82, + 0x81, 0x7E, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7E, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x7E, 0xF7, 0x84, 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x40, 0x81, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x66, 0x24, 0x24, 0x80, + 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x21, 0x84, 0x30, + 0x86, 0x10, 0xC2, 0x18, 0x42, 0xF7, 0x80, 0x81, 0xC3, 0x42, 0x66, 0x24, + 0x24, 0x00, 0x00, 0x24, 0x24, 0x66, 0x42, 0xC3, 0x81, 0x81, 0x81, 0x81, + 0x81, 0x81, 0x81, 0x7E, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7E, 0xFE, + 0x02, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x10, 0x30, 0x20, 0x60, 0x40, 0x40, + 0x7F, 0x1E, 0x40, 0x81, 0x02, 0x04, 0x08, 0x60, 0x20, 0x40, 0x81, 0x02, + 0x03, 0xC0, 0xFF, 0xFF, 0xF0, 0x10, 0x20, 0x40, 0x81, 0x02, 0x03, 0x08, + 0x10, 0x20, 0x40, 0x9E, 0x00, 0xFE, 0x18, 0x61, 0x86, 0x18, 0x61, 0x86, + 0x18, 0x61, 0x87, 0xF0 }; + +const GFXglyph Seven_Segment10pt7bGlyphs[] PROGMEM = { + { 0, 1, 1, 6, 0, 0 }, // 0x20 ' ' + { 1, 1, 14, 4, 1, -13 }, // 0x21 '!' + { 3, 3, 1, 6, 1, -12 }, // 0x22 '"' + { 4, 9, 9, 11, 1, -8 }, // 0x23 '#' + { 15, 8, 18, 10, 1, -15 }, // 0x24 '$' + { 33, 12, 14, 14, 1, -13 }, // 0x25 '%' + { 54, 44, 14, 47, 1, -13 }, // 0x26 '&' + { 131, 6, 14, 7, 1, -13 }, // 0x27 ''' + { 142, 5, 14, 8, 1, -13 }, // 0x28 '(' + { 151, 5, 14, 8, 1, -13 }, // 0x29 ')' + { 160, 5, 7, 8, 2, -16 }, // 0x2A '*' + { 165, 11, 11, 13, 1, -11 }, // 0x2B '+' + { 181, 2, 2, 5, 1, -1 }, // 0x2C ',' + { 182, 5, 1, 8, 1, -6 }, // 0x2D '-' + { 183, 1, 1, 4, 1, 0 }, // 0x2E '.' + { 184, 9, 14, 11, 1, -13 }, // 0x2F '/' + { 200, 8, 14, 10, 1, -13 }, // 0x30 '0' + { 214, 1, 14, 4, 1, -13 }, // 0x31 '1' + { 216, 8, 14, 10, 1, -13 }, // 0x32 '2' + { 230, 6, 14, 9, 2, -13 }, // 0x33 '3' + { 241, 8, 14, 10, 1, -13 }, // 0x34 '4' + { 255, 8, 14, 10, 1, -13 }, // 0x35 '5' + { 269, 8, 14, 10, 1, -13 }, // 0x36 '6' + { 283, 6, 14, 9, 2, -13 }, // 0x37 '7' + { 294, 8, 14, 10, 1, -13 }, // 0x38 '8' + { 308, 8, 14, 10, 1, -13 }, // 0x39 '9' + { 322, 1, 6, 4, 1, -5 }, // 0x3A ':' + { 323, 6, 14, 7, 1, -13 }, // 0x3B ';' + { 334, 3, 14, 6, 1, -13 }, // 0x3C '<' + { 340, 9, 5, 11, 1, -7 }, // 0x3D '=' + { 346, 3, 14, 6, 1, -13 }, // 0x3E '>' + { 352, 8, 14, 10, 1, -13 }, // 0x3F '?' + { 366, 8, 14, 10, 1, -13 }, // 0x40 '@' + { 380, 8, 14, 10, 1, -13 }, // 0x41 'A' + { 394, 8, 14, 10, 1, -13 }, // 0x42 'B' + { 408, 6, 14, 9, 1, -13 }, // 0x43 'C' + { 419, 8, 14, 10, 1, -13 }, // 0x44 'D' + { 433, 6, 14, 9, 1, -13 }, // 0x45 'E' + { 444, 6, 14, 9, 1, -13 }, // 0x46 'F' + { 455, 8, 14, 10, 1, -13 }, // 0x47 'G' + { 469, 8, 14, 10, 1, -13 }, // 0x48 'H' + { 483, 1, 14, 4, 1, -13 }, // 0x49 'I' + { 485, 8, 14, 10, 1, -13 }, // 0x4A 'J' + { 499, 8, 14, 10, 1, -13 }, // 0x4B 'K' + { 513, 6, 14, 9, 1, -13 }, // 0x4C 'L' + { 524, 11, 14, 14, 1, -13 }, // 0x4D 'M' + { 544, 8, 14, 10, 1, -13 }, // 0x4E 'N' + { 558, 8, 14, 10, 1, -13 }, // 0x4F 'O' + { 572, 8, 14, 10, 1, -13 }, // 0x50 'P' + { 586, 8, 14, 10, 1, -13 }, // 0x51 'Q' + { 600, 8, 14, 10, 1, -13 }, // 0x52 'R' + { 614, 8, 14, 10, 1, -13 }, // 0x53 'S' + { 628, 9, 14, 12, 1, -13 }, // 0x54 'T' + { 644, 8, 14, 10, 1, -13 }, // 0x55 'U' + { 658, 8, 14, 10, 1, -13 }, // 0x56 'V' + { 672, 11, 14, 14, 1, -13 }, // 0x57 'W' + { 692, 8, 14, 10, 1, -13 }, // 0x58 'X' + { 706, 8, 14, 10, 1, -13 }, // 0x59 'Y' + { 720, 8, 14, 10, 1, -13 }, // 0x5A 'Z' + { 734, 5, 14, 8, 1, -13 }, // 0x5B '[' + { 743, 9, 14, 11, 1, -13 }, // 0x5C '\' + { 759, 5, 14, 8, 1, -13 }, // 0x5D ']' + { 768, 14, 3, 16, 1, -8 }, // 0x5E '^' + { 774, 10, 1, 12, 1, 0 }, // 0x5F '_' + { 776, 6, 14, 7, 1, -13 }, // 0x60 '`' + { 787, 8, 14, 10, 1, -13 }, // 0x61 'a' + { 801, 8, 14, 10, 1, -13 }, // 0x62 'b' + { 815, 6, 14, 9, 1, -13 }, // 0x63 'c' + { 826, 8, 14, 10, 1, -13 }, // 0x64 'd' + { 840, 6, 14, 9, 1, -13 }, // 0x65 'e' + { 851, 6, 14, 9, 1, -13 }, // 0x66 'f' + { 862, 8, 14, 10, 1, -13 }, // 0x67 'g' + { 876, 8, 14, 10, 1, -13 }, // 0x68 'h' + { 890, 1, 14, 4, 1, -13 }, // 0x69 'i' + { 892, 8, 14, 10, 1, -13 }, // 0x6A 'j' + { 906, 8, 14, 10, 1, -13 }, // 0x6B 'k' + { 920, 6, 14, 9, 1, -13 }, // 0x6C 'l' + { 931, 11, 14, 14, 1, -13 }, // 0x6D 'm' + { 951, 8, 14, 10, 1, -13 }, // 0x6E 'n' + { 965, 8, 14, 10, 1, -13 }, // 0x6F 'o' + { 979, 8, 14, 10, 1, -13 }, // 0x70 'p' + { 993, 8, 14, 10, 1, -13 }, // 0x71 'q' + { 1007, 8, 14, 10, 1, -13 }, // 0x72 'r' + { 1021, 8, 14, 10, 1, -13 }, // 0x73 's' + { 1035, 9, 14, 12, 1, -13 }, // 0x74 't' + { 1051, 8, 14, 10, 1, -13 }, // 0x75 'u' + { 1065, 8, 14, 10, 1, -13 }, // 0x76 'v' + { 1079, 11, 14, 14, 1, -13 }, // 0x77 'w' + { 1099, 8, 14, 10, 1, -13 }, // 0x78 'x' + { 1113, 8, 14, 10, 1, -13 }, // 0x79 'y' + { 1127, 8, 14, 10, 1, -13 }, // 0x7A 'z' + { 1141, 7, 14, 10, 1, -13 }, // 0x7B '{' + { 1154, 1, 16, 4, 1, -15 }, // 0x7C '|' + { 1156, 7, 14, 10, 1, -13 }, // 0x7D '}' + { 1169, 6, 14, 7, 1, -13 } }; // 0x7E '~' + +const GFXfont Seven_Segment10pt7b PROGMEM = { + (uint8_t *)Seven_Segment10pt7bBitmaps, + (GFXglyph *)Seven_Segment10pt7bGlyphs, + 0x20, 0x7E, 20 }; + +// Approx. 1852 bytes diff --git a/examples/WatchFaces/7_SEG/Watchy_7_SEG.cpp b/examples/WatchFaces/7_SEG/Watchy_7_SEG.cpp new file mode 100644 index 0000000..aaed809 --- /dev/null +++ b/examples/WatchFaces/7_SEG/Watchy_7_SEG.cpp @@ -0,0 +1,156 @@ +#include "Watchy_7_SEG.h" + +const uint8_t BATTERY_SEGMENT_WIDTH = 7; +const uint8_t BATTERY_SEGMENT_HEIGHT = 11; +const uint8_t BATTERY_SEGMENT_SPACING = 9; +const uint8_t WEATHER_ICON_WIDTH = 48; +const uint8_t WEATHER_ICON_HEIGHT = 32; + +Watchy7SEG::Watchy7SEG(){} //constructor + +void Watchy7SEG::drawWatchFace(){ + display.fillScreen(GxEPD_BLACK); + drawTime(); + drawDate(); + drawSteps(); + drawWeather(); + drawBattery(); + display.drawBitmap(120, 77, WIFI_CONFIGURED ? wifi : wifioff, 26, 18, GxEPD_WHITE); + if(BLE_CONFIGURED){ + display.drawBitmap(100, 75, bluetooth, 13, 21, GxEPD_WHITE); + } +} + +void Watchy7SEG::drawTime(){ + display.setFont(&DSEG7_Classic_Bold_53); + display.setCursor(5, 53+5); + if(currentTime.Hour < 10){ + display.print("0"); + } + display.print(currentTime.Hour); + display.print(":"); + if(currentTime.Minute < 10){ + display.print("0"); + } + display.println(currentTime.Minute); +} + +void Watchy7SEG::drawDate(){ + display.setFont(&Seven_Segment10pt7b); + + int16_t x1, y1; + uint16_t w, h; + + String dayOfWeek = dayStr(currentTime.Wday); + display.getTextBounds(dayOfWeek, 5, 85, &x1, &y1, &w, &h); + display.setCursor(85 - w, 85); + display.println(dayOfWeek); + + String month = monthShortStr(currentTime.Month); + display.getTextBounds(month, 60, 110, &x1, &y1, &w, &h); + display.setCursor(85 - w, 110); + display.println(month); + + display.setFont(&DSEG7_Classic_Bold_25); + display.setCursor(5, 120); + if(currentTime.Day < 10){ + display.print("0"); + } + display.println(currentTime.Day); + display.setCursor(5, 150); + display.println(currentTime.Year + YEAR_OFFSET);// offset from 1970, since year is stored in uint8_t +} +void Watchy7SEG::drawSteps(){ + uint32_t stepCount = sensor.getCounter(); + display.drawBitmap(10, 165, steps, 19, 23, GxEPD_WHITE); + display.setCursor(35, 190); + display.println(stepCount); +} +void Watchy7SEG::drawBattery(){ + display.drawBitmap(154, 73, battery, 37, 21, GxEPD_WHITE); + display.fillRect(159, 78, 27, BATTERY_SEGMENT_HEIGHT, GxEPD_BLACK);//clear battery segments + int8_t batteryLevel = 0; + float VBAT = getBatteryVoltage(); + if(VBAT > 4.1){ + batteryLevel = 3; + } + else if(VBAT > 3.95 && VBAT <= 4.1){ + batteryLevel = 2; + } + else if(VBAT > 3.80 && VBAT <= 3.95){ + batteryLevel = 1; + } + else if(VBAT <= 3.80){ + batteryLevel = 0; + } + + for(int8_t batterySegments = 0; batterySegments < batteryLevel; batterySegments++){ + display.fillRect(159 + (batterySegments * BATTERY_SEGMENT_SPACING), 78, BATTERY_SEGMENT_WIDTH, BATTERY_SEGMENT_HEIGHT, GxEPD_WHITE); + } +} + +void Watchy7SEG::drawWeather(){ + + weatherData currentWeather = getWeatherData(); + int8_t temperature = currentWeather.temperature; + int16_t weatherConditionCode = currentWeather.weatherConditionCode; + + display.setFont(&DSEG7_Classic_Regular_39); + int16_t x1, y1; + uint16_t w, h; + display.getTextBounds(String(temperature), 100, 150, &x1, &y1, &w, &h); + display.setCursor(155 - w, 150); + display.println(temperature); + display.drawBitmap(165, 110, TEMP_UNIT == "metric" ? celsius : fahrenheit, 26, 20, GxEPD_WHITE); + const unsigned char* weatherIcon; + + //https://openweathermap.org/weather-conditions + if(weatherConditionCode > 801){//Cloudy + weatherIcon = cloudy; + }else if(weatherConditionCode == 801){//Few Clouds + weatherIcon = cloudsun; + }else if(weatherConditionCode == 800){//Clear + weatherIcon = sunny; + }else if(weatherConditionCode >=700){//Atmosphere + weatherIcon = cloudy; + }else if(weatherConditionCode >=600){//Snow + weatherIcon = snow; + }else if(weatherConditionCode >=500){//Rain + weatherIcon = rain; + }else if(weatherConditionCode >=300){//Drizzle + weatherIcon = rain; + }else if(weatherConditionCode >=200){//Thunderstorm + weatherIcon = rain; + } + display.drawBitmap(145, 158, weatherIcon, WEATHER_ICON_WIDTH, WEATHER_ICON_HEIGHT, GxEPD_WHITE); +} + +//#include "pokemon.h" +// class WatchyPokemon : public Watchy{ +// public: +// void updateWatchFace(bool partialRefresh){ + +// display.init(0, false); //_initial_refresh to false to prevent full update on init +// display.setFullWindow(); +// display.fillScreen(GxEPD_WHITE); +// display.drawBitmap(0, 0, pokemon, DISPLAY_WIDTH, DISPLAY_HEIGHT, GxEPD_BLACK); +// display.setTextColor(GxEPD_BLACK); +// display.setFont(&FreeMonoBold9pt7b); +// display.setCursor(10, 170); + +// if(currentTime.Hour < 10){ +// display.print('0'); +// } +// display.print(currentTime.Hour); +// display.print(':'); +// if(currentTime.Minute < 10){ +// display.print('0'); +// } +// display.print(currentTime.Minute); + +// display.display(partialRefresh); //partial refresh +// display.hibernate(); + +// guiState = WATCHFACE_STATE; +// } +// }; \ No newline at end of file diff --git a/examples/WatchFaces/7_SEG/Watchy_7_SEG.h b/examples/WatchFaces/7_SEG/Watchy_7_SEG.h new file mode 100644 index 0000000..89242bd --- /dev/null +++ b/examples/WatchFaces/7_SEG/Watchy_7_SEG.h @@ -0,0 +1,22 @@ +#ifndef WATCHY_7_SEG_H +#define WATCHY_7_SEG_H + +#include +#include "Seven_Segment10pt7b.h" +#include "DSEG7_Classic_Regular_15.h" +#include "DSEG7_Classic_Bold_25.h" +#include "DSEG7_Classic_Regular_39.h" +#include "icons.h" + +class Watchy7SEG : public Watchy{ + public: + Watchy7SEG(); + void drawWatchFace(); + void drawTime(); + void drawDate(); + void drawSteps(); + void drawWeather(); + void drawBattery(); +}; + +#endif \ No newline at end of file diff --git a/examples/WatchFaces/7_SEG/icons.h b/examples/WatchFaces/7_SEG/icons.h new file mode 100644 index 0000000..82fa6e0 --- /dev/null +++ b/examples/WatchFaces/7_SEG/icons.h @@ -0,0 +1,131 @@ +// 'battery', 37x21px +const unsigned char battery [] PROGMEM = { + 0x3f, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, + 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0x00, + 0x00, 0x00, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0xf8, + 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x7f, + 0xff, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0x80 +}; +// 'bluetooth', 13x21px +const unsigned char bluetooth [] PROGMEM = { + 0x1f, 0xc0, 0x3f, 0xe0, 0x7f, 0xf0, 0xfd, 0xf8, 0xfc, 0xf8, 0xfc, 0x78, 0xdd, 0x38, 0xcd, 0x98, + 0xe5, 0x38, 0xf0, 0x78, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0x78, 0xe5, 0x38, 0xcd, 0x98, 0xfd, 0x38, + 0xfc, 0x78, 0xfc, 0xf8, 0x7d, 0xf0, 0x3f, 0xe0, 0x1f, 0xc0 +}; +// 'celsius', 26x20px +const unsigned char celsius [] PROGMEM = { + 0x3f, 0x80, 0x1f, 0xc0, 0x7f, 0xc0, 0x3f, 0xc0, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, + 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, + 0xc0, 0x60, 0x60, 0x00, 0xff, 0xc0, 0x40, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x3f, 0xc0 +}; +// 'fahrenheit', 26x20px +const unsigned char fahrenheit [] PROGMEM = { + 0x3f, 0x80, 0x1f, 0xc0, 0x7f, 0xc0, 0x3f, 0xc0, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, + 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x60, 0x00, + 0xc0, 0x60, 0x60, 0x00, 0xff, 0xc0, 0x7f, 0xc0, 0x7f, 0x80, 0x3f, 0xc0, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'cloudsun', 48x32px +const unsigned char cloudsun [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x40, 0x00, 0x00, 0x00, 0x10, 0x44, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, + 0x00, 0x00, 0x00, 0x31, 0x80, 0x61, 0x00, 0x07, 0xe0, 0x19, 0x00, 0x32, 0x00, 0x38, 0x38, 0x02, + 0x00, 0x10, 0x00, 0x60, 0x04, 0x02, 0x00, 0x10, 0x00, 0x80, 0x03, 0xf2, 0x00, 0x10, 0x01, 0x00, + 0x01, 0x9e, 0x00, 0x10, 0x03, 0x00, 0x00, 0x03, 0x00, 0x10, 0x02, 0x00, 0x00, 0x01, 0x80, 0x10, + 0x02, 0x00, 0x00, 0x00, 0x80, 0x32, 0x04, 0x00, 0x00, 0x00, 0x40, 0x61, 0x04, 0x00, 0x00, 0x00, + 0x70, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x08, 0x60, 0x00, + 0x00, 0x00, 0x01, 0x04, 0x40, 0x00, 0x00, 0x00, 0x01, 0xc2, 0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00 +}; +// 'cloudy', 48x32px +const unsigned char cloudy [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x00, 0x01, 0x80, 0x00, 0x3f, + 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xe0 +}; +// 'rain', 48x32px +const unsigned char rain [] PROGMEM = { + 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x60, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x21, 0x08, 0x42, 0x10, 0x00, 0x00, 0x42, 0x10, 0x84, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x84, 0x21, 0x00, 0x00, 0x04, 0x21, + 0x08, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x21, 0x08, 0x00, 0x00 +}; +// 'snow', 48x32px +const unsigned char snow [] PROGMEM = { + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x81, 0x02, 0x40, 0x00, 0x00, 0x02, 0x81, 0x02, 0x80, 0x00, + 0x00, 0x01, 0x81, 0x03, 0x00, 0x00, 0x00, 0x07, 0x81, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x80, + 0x09, 0x20, 0x04, 0x00, 0x00, 0x40, 0x05, 0x40, 0x08, 0x00, 0x00, 0x20, 0x03, 0x80, 0x10, 0x00, + 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x20, 0x03, 0x80, 0x10, 0x00, 0x00, 0x40, 0x05, 0x40, + 0x08, 0x00, 0x00, 0x80, 0x09, 0x20, 0x04, 0x00, 0x00, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x00, 0x03, 0x81, 0x03, 0x80, 0x00, + 0x00, 0x01, 0x81, 0x03, 0x00, 0x00, 0x00, 0x02, 0x81, 0x02, 0x80, 0x00, 0x00, 0x04, 0x01, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x09, 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +}; +// 'sunny', 48x32px +const unsigned char sunny [] PROGMEM = { + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x18, + 0x20, 0x10, 0x60, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, + 0x00, 0x02, 0x0f, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, + 0x00, 0x00, 0x00, 0x30, 0x80, 0x04, 0x30, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, + 0x03, 0xf2, 0x00, 0x01, 0x1f, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30, + 0x80, 0x04, 0x30, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x00, 0x02, 0x0f, 0xc1, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x18, 0x20, 0x10, 0x60, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +}; +// 'steps', 19x23px +const unsigned char steps [] PROGMEM = { + 0x00, 0x03, 0xc0, 0x00, 0x07, 0xe0, 0x00, 0x07, 0xe0, 0x00, 0x0f, 0xe0, 0x78, 0x0f, 0xe0, 0xfc, + 0x0f, 0xe0, 0xfc, 0x0f, 0xe0, 0xfc, 0x0f, 0xe0, 0xfe, 0x0f, 0xe0, 0xfe, 0x07, 0xc0, 0xfe, 0x07, + 0xc0, 0xfe, 0x07, 0x80, 0xfe, 0x00, 0x00, 0x7c, 0x0e, 0x00, 0x7c, 0x0f, 0x80, 0x7c, 0x1f, 0x80, + 0x20, 0x1f, 0x00, 0x06, 0x0f, 0x00, 0x3e, 0x0e, 0x00, 0x3e, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x1e, 0x00, 0x00 +}; +// 'wifi', 26x18px +const unsigned char wifi [] PROGMEM = { + 0x00, 0x7f, 0x80, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x1f, 0xc0, 0xfe, 0x00, + 0x7e, 0x00, 0x1f, 0x80, 0xf8, 0x3f, 0x07, 0xc0, 0x71, 0xff, 0xe3, 0x80, 0x23, 0xff, 0xf1, 0x00, + 0x07, 0xc0, 0xf8, 0x00, 0x0f, 0x00, 0x3c, 0x00, 0x06, 0x3f, 0x18, 0x00, 0x02, 0x7f, 0x90, 0x00, + 0x00, 0xff, 0xc0, 0x00, 0x00, 0xe1, 0xc0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00 +}; +// 'wifioff', 26x18px +const unsigned char wifioff [] PROGMEM = { + 0x00, 0x7f, 0x87, 0xc0, 0x03, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0x00, 0x1f, 0xc0, 0xfe, 0x00, + 0x7e, 0x00, 0x7f, 0x80, 0xf8, 0x3f, 0xf7, 0xc0, 0x71, 0xff, 0xe3, 0x80, 0x23, 0xff, 0xf1, 0x00, + 0x07, 0xcf, 0xf8, 0x00, 0x0f, 0x3e, 0x3c, 0x00, 0x06, 0x7f, 0x18, 0x00, 0x02, 0xff, 0x90, 0x00, + 0x01, 0xff, 0xc0, 0x00, 0x07, 0xe1, 0xc0, 0x00, 0x0f, 0xc0, 0x80, 0x00, 0x1f, 0x0c, 0x00, 0x00, + 0x3c, 0x1e, 0x00, 0x00, 0xf8, 0x0c, 0x00, 0x00 +}; diff --git a/examples/WatchFaces/Basic/Basic.ino b/examples/WatchFaces/Basic/Basic.ino new file mode 100644 index 0000000..aeffc3b --- /dev/null +++ b/examples/WatchFaces/Basic/Basic.ino @@ -0,0 +1,9 @@ +#include + +Watchy watchy; + +void setup(){ + watchy.init(); +} + +void loop(){} \ No newline at end of file diff --git a/examples/Watchy_Accelerometer/Watchy_Accelerometer.ino b/examples/Watchy_Accelerometer/Watchy_Accelerometer.ino deleted file mode 100644 index 298551a..0000000 --- a/examples/Watchy_Accelerometer/Watchy_Accelerometer.ino +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Watchy - Accelerometer Example - * Prints out the BMA423 accelerometer data on Serial - */ - -#ifndef ESP32 -#error Please select ESP32 Wrover Module under Tools > Board -#endif - -#include - -BMA *bma = nullptr; -I2CBus *i2c = nullptr; - -void setup() -{ - byte data; - Serial.begin(115200); - i2c = new I2CBus(); - bma = new BMA(*i2c); - bma->begin(); - bma->enableAccel(); -} - -void loop(){ - Accel acc; - bool res = bma->getAccel(acc); - Serial.print(acc.x); - Serial.print(" , "); - Serial.print(acc.y); - Serial.print(" , "); - Serial.println(acc.z); -} \ No newline at end of file diff --git a/examples/Watchy_Analog/Watchy_Analog.ino b/examples/Watchy_Analog/Watchy_Analog.ino deleted file mode 100644 index 9343586..0000000 --- a/examples/Watchy_Analog/Watchy_Analog.ino +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Watchy - Analog Example - * Sets the RTC time if not set, goes to sleep and wakes up every minute to update the time on the display - */ - -#ifndef ESP32 -#error Please select ESP32 Wrover Module under Tools > Board -#endif - -#include -#include - -#define RTC_PIN GPIO_NUM_33 -#define ORIGIN_X 200/2 -#define ORIGIN_Y 200/2 -#define HOUR_HAND_LENGTH 50 -#define HOUR_HAND_WIDTH 11 -#define MINUTE_HAND_LENGTH 90 -#define MINUTE_HAND_WIDTH 7 - -DS3232RTC RTC(false); -GxEPD2_BW display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 - -void setup() -{ - esp_sleep_wakeup_cause_t wakeup_reason; - wakeup_reason = esp_sleep_get_wakeup_cause(); - switch(wakeup_reason) - { - case ESP_SLEEP_WAKEUP_EXT0: updateTime(false); break; //RTC Alarm Interrupt - default: updateTime(true); //Hard Reset - } - esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt - esp_deep_sleep_start(); -} - -void loop(){} - -void updateTime(bool reset) -{ - RTC.begin(); - if(reset){ - RTC.squareWave(SQWAVE_NONE); //disable square wave output - RTC.set(compileTime()); //set RTC time to compile time - RTC.setAlarm(ALM2_EVERY_MINUTE, 0, 0, 0, 0); - RTC.alarmInterrupt(ALARM_2, true); //enable alarm interrupt - } - RTC.alarm(ALARM_2); //resets the alarm flag in the RTC - tmElements_t currentTime; - RTC.read(currentTime); - - display.init(0, reset); //_initial_refresh to false to prevent full update on init - display.fillScreen(GxEPD_WHITE); - display.setTextColor(GxEPD_BLACK); - setHands(currentTime); - - display.display(true); - display.hibernate(); -} - -void setHands(tmElements_t time){ - //hour - float hour_radians = (((time.Hour % 12)+(time.Minute/60.0))/12.0)*2*M_PI; //radians - int hour_x1 = sinf(hour_radians)*HOUR_HAND_LENGTH; - int hour_y1 = cosf(hour_radians)*HOUR_HAND_LENGTH; - fillRectAngle(ORIGIN_X, ORIGIN_Y, ORIGIN_X+hour_x1, ORIGIN_Y-hour_y1, HOUR_HAND_WIDTH, GxEPD_BLACK); - //minute - float minute_radians = (time.Minute/60.0)*2*M_PI; //radians - int minute_x1 = sinf(minute_radians)*MINUTE_HAND_LENGTH; - int minute_y1 = cosf(minute_radians)*MINUTE_HAND_LENGTH; - fillRectAngle(ORIGIN_X, ORIGIN_Y, ORIGIN_X+minute_x1, ORIGIN_Y-minute_y1, MINUTE_HAND_WIDTH, GxEPD_BLACK); -} - -void fillRectAngle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t size, uint16_t color) -{ - //x0,y0 to x1,y1 form the center line of the rectangle (width), size is the height - int16_t dif_x = x1 - x0; // numerator of the formula for dy - int16_t dif_y = y1 - y0; // numerator for dx - float sqr = sqrt(dif_x*dif_x + dif_y*dif_y); // denominator of the formulas - int16_t dx = (size / 2.0) * dif_y / sqr; // multiply the fraction with half the width of the rectangle - int16_t dy = (size / 2.0) * dif_x / sqr; // the same for - display.fillTriangle(x0 + dx, y0 - dy, x0 - dx, y0 + dy, x1 + dx, y1 - dy, color); - display.fillTriangle(x0 - dx, y0 + dy, x1 - dx, y1 + dy, x1 + dx, y1 - dy, color); -} - -time_t compileTime() -{ - const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) - const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec"; - char compMon[3], *m; - - strncpy(compMon, compDate, 3); - compMon[3] = '\0'; - m = strstr(months, compMon); - - tmElements_t tm; - tm.Month = ((m - months) / 3 + 1); - tm.Day = atoi(compDate + 4); - tm.Year = atoi(compDate + 7) - 1970; - tm.Hour = atoi(compTime); - tm.Minute = atoi(compTime + 3); - tm.Second = atoi(compTime + 6); - - time_t t = makeTime(tm); - return t + FUDGE; //add fudge factor to allow for compile time -} diff --git a/examples/Watchy_Basic/DSEG7_Classic_Bold_48.h b/examples/Watchy_Basic/DSEG7_Classic_Bold_48.h deleted file mode 100644 index a53a97f..0000000 --- a/examples/Watchy_Basic/DSEG7_Classic_Bold_48.h +++ /dev/null @@ -1,199 +0,0 @@ -// Created by http://oleddisplay.squix.ch/ Consider a donation -// In case of problems make sure that you are using the font file with the correct version! -const uint8_t DSEG7_Classic_Bold_48Bitmaps[] PROGMEM = { - - // Bitmap Data: - 0x00, // ' ' - 0x00, // '!' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '"' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '#' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '$' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '%' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '&' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ''' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '(' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ')' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '*' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '+' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ',' - 0x1F,0xFF,0xF0,0x3F,0xFF,0xF8,0x7F,0xFF,0xFC,0x7F,0xFF,0xFC,0x3F,0xFF,0xF8,0x1F,0xFF,0xF0, // '-' - 0x79,0xFB,0xF7,0xEF,0xCF,0x00, // '.' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '/' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '0' - 0x00,0x18,0x71,0xE7,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xF9,0xF1,0xE1,0xC1,0x80,0x0E,0x3C,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x3E,0x3C,0x38,0x30,0x00, // '1' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x07,0xFF,0xFF,0x38,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x0F,0xFF,0xF9,0xE0,0x7F,0xFF,0xF3,0x83,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0x0F,0xBF,0xFF,0xE0,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0x3D,0xFF,0xFF,0xC0,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '2' - 0x7F,0xFF,0xFF,0x0F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xE6,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0x9E,0x00,0x00,0x03,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x03,0xE0,0xFF,0xFF,0x9E,0x1F,0xFF,0xFC,0xE3,0xFF,0xFF,0xE6,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xCE,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x3E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x3E,0x0F,0xFF,0xF9,0xE1,0xFF,0xFF,0xCE,0x3F,0xFF,0xFE,0x67,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xF0, // '3' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x60,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x80,0x00,0x00,0x00, // '4' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x3F,0xFF,0xE7,0x81,0xFF,0xFF,0xCE,0x0F,0xFF,0xFF,0x98,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '5' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '6' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // '7' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '8' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x3F,0xFF,0xE7,0x81,0xFF,0xFF,0xCE,0x0F,0xFF,0xFF,0x98,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '9' - 0x79,0xF3,0xF7,0xEF,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x9F,0xBF,0x7E,0x78, // ':' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ';' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '<' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '=' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '>' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '?' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '@' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'A' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'B' - 0x03,0xFF,0xFE,0x00,0x7F,0xFF,0xF0,0x0F,0xFF,0xFF,0x8E,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0x5F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC0, // 'C' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0xFF,0xFF,0x9E,0x07,0xFF,0xFF,0x38,0x3F,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'D' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'E' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xF8,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'F' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'G' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'H' - 0x1C,0x79,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0x7C,0x78,0x70,0x60,0x00, // 'I' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'J' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'K' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0x80,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF8,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'L' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'M' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0x40,0x00,0x00,0x00, // 'N' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x5F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x00, // 'O' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0x0F,0xBF,0xFF,0xE0,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00, // 'P' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // 'Q' - 0x03,0xFF,0xFE,0x00,0xFF,0xFF,0xE0,0x3F,0xFF,0xFE,0x77,0xFF,0xFF,0xCF,0x7F,0xFF,0xF1,0xF7,0xFF,0xFC,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF8,0x00,0x00,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF0,0x00,0x00,0x3C,0x00,0x00,0x07,0x00,0x00,0x00,0x40,0x00,0x00,0x00, // 'R' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x00,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'S' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'T' - 0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'U' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0x00,0x00,0x1E,0xF0,0x00,0x00,0x3B,0x80,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'V' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'W' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'X' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x60,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'Y' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x07,0xFF,0xFF,0x38,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0x3D,0xFF,0xFF,0xC0,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'Z' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '[' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '\' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ']' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '^' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '_' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '`' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'a' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'b' - 0x03,0xFF,0xFE,0x00,0x7F,0xFF,0xF0,0x0F,0xFF,0xFF,0x8E,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0x5F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC0, // 'c' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0xFF,0xFF,0x9E,0x07,0xFF,0xFF,0x38,0x3F,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'd' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'e' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xF8,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'f' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'g' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'h' - 0x1C,0x79,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0x7C,0x78,0x70,0x60,0x00, // 'i' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'j' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'k' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0x80,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF8,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'l' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'm' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0x40,0x00,0x00,0x00, // 'n' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x5F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x00, // 'o' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0x0F,0xBF,0xFF,0xE0,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00, // 'p' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // 'q' - 0x03,0xFF,0xFE,0x00,0xFF,0xFF,0xE0,0x3F,0xFF,0xFE,0x77,0xFF,0xFF,0xCF,0x7F,0xFF,0xF1,0xF7,0xFF,0xFC,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF8,0x00,0x00,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF0,0x00,0x00,0x3C,0x00,0x00,0x07,0x00,0x00,0x00,0x40,0x00,0x00,0x00, // 'r' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x00,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 's' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 't' - 0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'u' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0x00,0x00,0x1E,0xF0,0x00,0x00,0x3B,0x80,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'v' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'w' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'x' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x60,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'y' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x07,0xFF,0xFF,0x38,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0x3D,0xFF,0xFF,0xC0,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'z' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '{' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '|' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE // '}' -}; -const GFXglyph DSEG7_Classic_Bold_48Glyphs[] PROGMEM = { -// bitmapOffset, width, height, xAdvance, xOffset, yOffset - { 0, 1, 1, 11, 0, 0 }, // ' ' - { 1, 1, 1, 40, 0, 0 }, // '!' - { 2, 14, 32, 18, 2, -32 }, // '"' - { 58, 14, 32, 18, 2, -32 }, // '#' - { 114, 14, 32, 18, 2, -32 }, // '$' - { 170, 14, 32, 18, 2, -32 }, // '%' - { 226, 14, 32, 18, 2, -32 }, // '&' - { 282, 14, 32, 18, 2, -32 }, // ''' - { 338, 14, 32, 18, 2, -32 }, // '(' - { 394, 14, 32, 18, 2, -32 }, // ')' - { 450, 14, 32, 18, 2, -32 }, // '*' - { 506, 14, 32, 18, 2, -32 }, // '+' - { 562, 14, 32, 18, 2, -32 }, // ',' - { 618, 24, 6, 40, 8, -27 }, // '-' - { 636, 7, 6, 1, -3, -6 }, // '.' - { 642, 14, 32, 18, 2, -32 }, // '/' - { 698, 30, 48, 40, 5, -48 }, // '0' - { 878, 7, 44, 40, 28, -46 }, // '1' - { 917, 30, 48, 40, 5, -48 }, // '2' - { 1097, 28, 48, 40, 7, -48 }, // '3' - { 1265, 30, 44, 40, 5, -46 }, // '4' - { 1430, 30, 48, 40, 5, -48 }, // '5' - { 1610, 30, 48, 40, 5, -48 }, // '6' - { 1790, 30, 46, 40, 5, -48 }, // '7' - { 1963, 30, 48, 40, 5, -48 }, // '8' - { 2143, 30, 48, 40, 5, -48 }, // '9' - { 2323, 7, 25, 11, 2, -36 }, // ':' - { 2345, 14, 32, 18, 2, -32 }, // ';' - { 2401, 14, 32, 18, 2, -32 }, // '<' - { 2457, 14, 32, 18, 2, -32 }, // '=' - { 2513, 14, 32, 18, 2, -32 }, // '>' - { 2569, 14, 32, 18, 2, -32 }, // '?' - { 2625, 14, 32, 18, 2, -32 }, // '@' - { 2681, 30, 46, 40, 5, -48 }, // 'A' - { 2854, 30, 46, 40, 5, -46 }, // 'B' - { 3027, 28, 27, 40, 5, -27 }, // 'C' - { 3122, 30, 46, 40, 5, -46 }, // 'D' - { 3295, 28, 48, 40, 5, -48 }, // 'E' - { 3463, 28, 46, 40, 5, -48 }, // 'F' - { 3624, 30, 48, 40, 5, -48 }, // 'G' - { 3804, 30, 44, 40, 5, -46 }, // 'H' - { 3969, 7, 21, 40, 28, -23 }, // 'I' - { 3988, 30, 46, 40, 5, -46 }, // 'J' - { 4161, 30, 46, 40, 5, -48 }, // 'K' - { 4334, 28, 46, 40, 5, -46 }, // 'L' - { 4495, 30, 46, 40, 5, -48 }, // 'M' - { 4668, 30, 25, 40, 5, -27 }, // 'N' - { 4762, 30, 27, 40, 5, -27 }, // 'O' - { 4864, 30, 46, 40, 5, -48 }, // 'P' - { 5037, 30, 46, 40, 5, -48 }, // 'Q' - { 5210, 27, 25, 40, 5, -27 }, // 'R' - { 5295, 30, 46, 40, 5, -46 }, // 'S' - { 5468, 28, 46, 40, 5, -46 }, // 'T' - { 5629, 30, 24, 40, 5, -24 }, // 'U' - { 5719, 30, 46, 40, 5, -46 }, // 'V' - { 5892, 30, 46, 40, 5, -46 }, // 'W' - { 6065, 30, 44, 40, 5, -46 }, // 'X' - { 6230, 30, 46, 40, 5, -46 }, // 'Y' - { 6403, 30, 48, 40, 5, -48 }, // 'Z' - { 6583, 14, 32, 18, 2, -32 }, // '[' - { 6639, 14, 32, 18, 2, -32 }, // '\' - { 6695, 14, 32, 18, 2, -32 }, // ']' - { 6751, 14, 32, 18, 2, -32 }, // '^' - { 6807, 14, 32, 18, 2, -32 }, // '_' - { 6863, 14, 32, 18, 2, -32 }, // '`' - { 6919, 30, 46, 40, 5, -48 }, // 'a' - { 7092, 30, 46, 40, 5, -46 }, // 'b' - { 7265, 28, 27, 40, 5, -27 }, // 'c' - { 7360, 30, 46, 40, 5, -46 }, // 'd' - { 7533, 28, 48, 40, 5, -48 }, // 'e' - { 7701, 28, 46, 40, 5, -48 }, // 'f' - { 7862, 30, 48, 40, 5, -48 }, // 'g' - { 8042, 30, 44, 40, 5, -46 }, // 'h' - { 8207, 7, 21, 40, 28, -23 }, // 'i' - { 8226, 30, 46, 40, 5, -46 }, // 'j' - { 8399, 30, 46, 40, 5, -48 }, // 'k' - { 8572, 28, 46, 40, 5, -46 }, // 'l' - { 8733, 30, 46, 40, 5, -48 }, // 'm' - { 8906, 30, 25, 40, 5, -27 }, // 'n' - { 9000, 30, 27, 40, 5, -27 }, // 'o' - { 9102, 30, 46, 40, 5, -48 }, // 'p' - { 9275, 30, 46, 40, 5, -48 }, // 'q' - { 9448, 27, 25, 40, 5, -27 }, // 'r' - { 9533, 30, 46, 40, 5, -46 }, // 's' - { 9706, 28, 46, 40, 5, -46 }, // 't' - { 9867, 30, 24, 40, 5, -24 }, // 'u' - { 9957, 30, 46, 40, 5, -46 }, // 'v' - { 10130, 30, 46, 40, 5, -46 }, // 'w' - { 10303, 30, 44, 40, 5, -46 }, // 'x' - { 10468, 30, 46, 40, 5, -46 }, // 'y' - { 10641, 30, 48, 40, 5, -48 }, // 'z' - { 10821, 14, 32, 18, 2, -32 }, // '{' - { 10877, 14, 32, 18, 2, -32 }, // '|' - { 10933, 14, 32, 18, 2, -32 } // '}' -}; -const GFXfont DSEG7_Classic_Bold_48 PROGMEM = { -(uint8_t *)DSEG7_Classic_Bold_48Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_48Glyphs,0x20, 0x7E, 53}; diff --git a/examples/Watchy_Basic/Watchy_Basic.ino b/examples/Watchy_Basic/Watchy_Basic.ino deleted file mode 100644 index a03e099..0000000 --- a/examples/Watchy_Basic/Watchy_Basic.ino +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Watchy - Basic Example - * Sets the RTC time if not set, goes to sleep and wakes up every minute to update the time on the display - */ - -#ifndef ESP32 -#error Please select ESP32 Wrover Module under Tools > Board -#endif - -#include -#include -#include "DSEG7_Classic_Bold_48.h" - -#define RTC_PIN GPIO_NUM_33 - -DS3232RTC RTC(false); -GxEPD2_BW display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 - -void setup() -{ - esp_sleep_wakeup_cause_t wakeup_reason; - wakeup_reason = esp_sleep_get_wakeup_cause(); - switch(wakeup_reason) - { - case ESP_SLEEP_WAKEUP_EXT0: updateTime(false); break; //RTC Alarm Interrupt - default: updateTime(true); //Hard Reset - } - esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt - esp_deep_sleep_start(); -} - -void loop(){} - -void updateTime(bool reset) -{ - RTC.begin(); - if(reset){ - RTC.squareWave(SQWAVE_NONE); //disable square wave output - RTC.set(compileTime()); //set RTC time to compile time - RTC.setAlarm(ALM2_EVERY_MINUTE, 0, 0, 0, 0); - RTC.alarmInterrupt(ALARM_2, true); //enable alarm interrupt - } - RTC.alarm(ALARM_2); //resets the alarm flag in the RTC - tmElements_t currentTime; - RTC.read(currentTime); - - display.init(0, reset); //_initial_refresh to false to prevent full update on init - display.setFullWindow(); - display.fillScreen(GxEPD_BLACK); - display.setTextColor(GxEPD_WHITE); - display.setFont(&DSEG7_Classic_Bold_48); - display.setCursor(15, 120); - - if(currentTime.Hour < 10){ - display.print('0'); - } - display.print(currentTime.Hour); - display.print(':'); - if(currentTime.Minute < 10){ - display.print('0'); - } - display.print(currentTime.Minute); - display.display(true); //partial refresh - display.hibernate(); -} - -time_t compileTime() -{ - const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) - const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec"; - char compMon[3], *m; - - strncpy(compMon, compDate, 3); - compMon[3] = '\0'; - m = strstr(months, compMon); - - tmElements_t tm; - tm.Month = ((m - months) / 3 + 1); - tm.Day = atoi(compDate + 4); - tm.Year = atoi(compDate + 7) - 1970; - tm.Hour = atoi(compTime); - tm.Minute = atoi(compTime + 3); - tm.Second = atoi(compTime + 6); - - time_t t = makeTime(tm); - return t + FUDGE; //add fudge factor to allow for compile time -} diff --git a/examples/Watchy_Button_Test/DSEG14_Classic_Bold_18.h b/examples/Watchy_Button_Test/DSEG14_Classic_Bold_18.h deleted file mode 100644 index f4ba248..0000000 --- a/examples/Watchy_Button_Test/DSEG14_Classic_Bold_18.h +++ /dev/null @@ -1,199 +0,0 @@ -// Created by http://oleddisplay.squix.ch/ Consider a donation -// In case of problems make sure that you are using the font file with the correct version! -const uint8_t DSEG14_Classic_Bold_18Bitmaps[] PROGMEM = { - - // Bitmap Data: - 0x00, // ' ' - 0x00, // '!' - 0x81,0x83,0x36,0x6C,0xD9,0xB1,0x40, // '"' - 0xFA,0x28,0xA2,0x8A,0x28,0xA2,0x8A,0x28,0xBE, // '#' - 0x7F,0xCB,0xF8,0xC0,0x0C,0xC0,0xCC,0x0C,0xC0,0xCC,0x0C,0x40,0xBB,0x83,0xBA,0x04,0x60,0xC6,0x0C,0x60,0xC6,0x0C,0x60,0x06,0x3F,0xA7,0xFC, // '$' - 0x80,0x0C,0x00,0xE1,0x0F,0x10,0xF1,0x0D,0x10,0xD1,0x0B,0xB8,0x3B,0xA1,0x16,0x11,0x63,0x16,0x31,0x62,0x16,0x00,0x60,0x02, // '%' - 0xFF,0x8F,0xE0,0x00,0x21,0x06,0x20,0xC4,0x08,0x81,0x10,0x00,0x00,0x08,0x8B,0x11,0x66,0x2C,0xC5,0x90,0xB0,0x06,0x7F,0x5F,0xF0, // '&' - 0xDB,0x64,0x00, // ''' - 0xAA,0x82,0xAA, // '(' - 0x9B,0x24,0x02,0x5B,0x40, // ')' - 0x5A,0x1E,0x87,0xA0,0xE8,0x2A,0x1D,0xC7,0x70,0xA8,0x3A,0x1E,0x87,0xA1,0x68, // '*' - 0x18,0x06,0x01,0x80,0x60,0x08,0x1D,0xC7,0x70,0x20,0x18,0x06,0x01,0x80,0x60, // '+' - 0x4B,0x68, // ',' - 0x77,0x1D,0xC0, // '-' - 0xD8, // '.' - 0x04,0x08,0x10,0x20,0x40,0x00,0x20,0x41,0x83,0x04,0x00, // '/' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x16,0xC1,0x6C,0x16,0xC1,0x6C,0x16,0x80,0x28,0x02,0xD0,0x6D,0x06,0xF0,0x6F,0x06,0xE0,0x6C,0x06,0xBF,0xA7,0xFC, // '0' - 0x5B,0x6D,0xB2,0x5B,0x6D,0xB2, // '1' - 0x7F,0xC3,0xFA,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x3B,0xAB,0xB8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xBF,0x87,0xFC, // '2' - 0xFF,0x8F,0xE8,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x77,0x4E,0xE8,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x7F,0x5F,0xF0, // '3' - 0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xBA,0x3B,0xA0,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x02, // '4' - 0x7F,0xCB,0xF8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xBB,0x83,0xBA,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x3F,0xA7,0xFC, // '5' - 0x7F,0xCB,0xF8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xBB,0x8B,0xBA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBF,0xA7,0xFC, // '6' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x20,0x02,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x20, // '7' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xBA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBF,0xA7,0xFC, // '8' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xA3,0xBA,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x3F,0xA7,0xFC, // '9' - 0x9A,0x00,0x00,0xD8, // ':' - 0xFA,0x28,0xA2,0x8A,0x28,0xA2,0x8A,0x28,0xBE, // ';' - 0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x00,0x00,0x80,0x20,0x18,0x06,0x01,0x00,0x00,0x1F,0xCF,0xF8, // '<' - 0x77,0x1D,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0xE0, // '=' - 0x40,0x18,0x06,0x00,0x80,0x20,0x00,0x00,0x00,0x08,0x02,0x00,0x80,0x20,0x08,0x00,0x1F,0xCF,0xF8, // '>' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x83,0xA0,0x38,0x04,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00, // '?' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x83,0xA8,0x3A,0xC4,0x6C,0xC6,0xCC,0x6C,0xC6,0xCC,0x6C,0x06,0xBF,0xA7,0xFC, // '@' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xBA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x20, // 'A' - 0xFF,0x8F,0xE8,0x03,0x0C,0x61,0x8C,0x31,0x86,0x30,0x46,0x07,0x40,0xE8,0x23,0x0C,0x61,0x8C,0x31,0x86,0x30,0x06,0x7F,0x5F,0xF0, // 'B' - 0x7F,0xD7,0xF3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0x80,0x10,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBF,0x8F,0xF8, // 'C' - 0xFF,0x8F,0xE8,0x03,0x0C,0x61,0x8C,0x31,0x86,0x30,0x46,0x00,0x40,0x08,0x23,0x0C,0x61,0x8C,0x31,0x86,0x30,0x06,0x7F,0x5F,0xF0, // 'D' - 0x7F,0xD7,0xF3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBB,0x97,0x73,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBF,0x8F,0xF8, // 'E' - 0x7F,0xD7,0xF3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBB,0x97,0x73,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0x80,0x00, // 'F' - 0x7F,0xCB,0xF8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0x83,0x88,0x3A,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBF,0xA7,0xFC, // 'G' - 0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xBA,0xBB,0xAC,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x68,0x02, // 'H' - 0xFF,0x9F,0xC0,0x00,0x60,0x18,0x06,0x01,0x80,0x20,0x00,0x00,0x00,0x80,0x60,0x18,0x06,0x01,0x80,0x00,0x7F,0x3F,0xE0, // 'I' - 0x00,0x20,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x02,0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xFA,0x7F,0xC0, // 'J' - 0x80,0x60,0x30,0x58,0x2C,0x16,0x0B,0x05,0x70,0xB8,0x60,0xB0,0x58,0x2C,0x16,0x0B,0x01,0x00, // 'K' - 0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x04,0x00,0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x05,0xFC,0x7F,0xC0, // 'L' - 0x80,0x2C,0x06,0xE1,0x6F,0x16,0xF1,0x6D,0x16,0xD1,0x68,0x02,0x80,0x2C,0x46,0xCC,0x6C,0xC6,0xCC,0x6C,0xC6,0xC0,0x68,0x02, // 'M' - 0x80,0x2C,0x06,0xE0,0x6F,0x06,0xF0,0x6D,0x06,0xD0,0x68,0x02,0x80,0x2C,0x16,0xC1,0x6C,0x16,0xC1,0x6C,0x16,0xC0,0x68,0x02, // 'N' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x28,0x02,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBF,0xA7,0xFC, // 'O' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xB8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0x80,0x00, // 'P' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x28,0x02,0xC1,0x6C,0x16,0xC1,0x6C,0x16,0xC1,0x6C,0x06,0xBF,0xA7,0xFC, // 'Q' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xB8,0xC1,0x0C,0x10,0xC1,0x0C,0x10,0xC1,0x0C,0x00,0x80,0x00, // 'R' - 0x7F,0xCB,0xF8,0xC0,0x0E,0x00,0xF0,0x0F,0x00,0xD0,0x0D,0x00,0xBB,0x83,0xBA,0x01,0x60,0x16,0x01,0x60,0x16,0x01,0x60,0x06,0x3F,0xA7,0xFC, // 'S' - 0xFF,0x9F,0xC0,0x00,0x60,0x18,0x06,0x01,0x80,0x20,0x00,0x00,0x00,0x80,0x60,0x18,0x06,0x01,0x80, // 'T' - 0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x68,0x02,0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xFA,0x7F,0xC0, // 'U' - 0x80,0x60,0x30,0x58,0x2C,0x16,0x0B,0x05,0x00,0x80,0x68,0x34,0x1E,0x0F,0x07,0x03,0x01,0x00, // 'V' - 0x80,0x2C,0x06,0xCC,0x6C,0xC6,0xCC,0x6C,0xC6,0xC4,0x68,0x02,0x80,0x2D,0x16,0xD1,0x6F,0x16,0xF1,0x6E,0x16,0xC0,0x68,0x02, // 'W' - 0x85,0x8B,0x12,0x24,0x40,0x00,0x22,0x45,0x8B,0x14,0x20, // 'X' - 0x85,0x8B,0x12,0x24,0x40,0x00,0x08,0x30,0x60,0xC1,0x80, // 'Y' - 0xFF,0x9F,0xC0,0x00,0x08,0x02,0x00,0x80,0x20,0x08,0x00,0x00,0x02,0x00,0x80,0x60,0x18,0x04,0x00,0x00,0x7F,0x3F,0xE0, // 'Z' - 0xFA,0x28,0xA2,0x8A,0x28,0xA2,0x8A,0x28,0xBE, // '[' - 0x81,0x83,0x02,0x04,0x00,0x00,0x02,0x04,0x08,0x10,0x20, // '\' - 0xFA,0x28,0xA2,0x8A,0x28,0xA2,0x8A,0x28,0xBE, // ']' - 0x86,0x39,0xEF,0x6B,0x50, // '^' - 0x7F,0x3F,0xE0, // '_' - 0x9B,0x24, // '`' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xBA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x20, // 'a' - 0xFF,0x8F,0xE8,0x03,0x0C,0x61,0x8C,0x31,0x86,0x30,0x46,0x07,0x40,0xE8,0x23,0x0C,0x61,0x8C,0x31,0x86,0x30,0x06,0x7F,0x5F,0xF0, // 'b' - 0x7F,0xD7,0xF3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0x80,0x10,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBF,0x8F,0xF8, // 'c' - 0xFF,0x8F,0xE8,0x03,0x0C,0x61,0x8C,0x31,0x86,0x30,0x46,0x00,0x40,0x08,0x23,0x0C,0x61,0x8C,0x31,0x86,0x30,0x06,0x7F,0x5F,0xF0, // 'd' - 0x7F,0xD7,0xF3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBB,0x97,0x73,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBF,0x8F,0xF8, // 'e' - 0x7F,0xD7,0xF3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xBB,0x97,0x73,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0x80,0x00, // 'f' - 0x7F,0xCB,0xF8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0x83,0x88,0x3A,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBF,0xA7,0xFC, // 'g' - 0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xBA,0xBB,0xAC,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x68,0x02, // 'h' - 0xFF,0x9F,0xC0,0x00,0x60,0x18,0x06,0x01,0x80,0x20,0x00,0x00,0x00,0x80,0x60,0x18,0x06,0x01,0x80,0x00,0x7F,0x3F,0xE0, // 'i' - 0x00,0x20,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x02,0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xFA,0x7F,0xC0, // 'j' - 0x80,0x60,0x30,0x58,0x2C,0x16,0x0B,0x05,0x70,0xB8,0x60,0xB0,0x58,0x2C,0x16,0x0B,0x01,0x00, // 'k' - 0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x04,0x00,0x80,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x05,0xFC,0x7F,0xC0, // 'l' - 0x80,0x2C,0x06,0xE1,0x6F,0x16,0xF1,0x6D,0x16,0xD1,0x68,0x02,0x80,0x2C,0x46,0xCC,0x6C,0xC6,0xCC,0x6C,0xC6,0xC0,0x68,0x02, // 'm' - 0x80,0x2C,0x06,0xE0,0x6F,0x06,0xF0,0x6D,0x06,0xD0,0x68,0x02,0x80,0x2C,0x16,0xC1,0x6C,0x16,0xC1,0x6C,0x16,0xC0,0x68,0x02, // 'n' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x28,0x02,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBF,0xA7,0xFC, // 'o' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xB8,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0x80,0x00, // 'p' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0x80,0x28,0x02,0xC1,0x6C,0x16,0xC1,0x6C,0x16,0xC1,0x6C,0x06,0xBF,0xA7,0xFC, // 'q' - 0x7F,0xCB,0xFA,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xBB,0xAB,0xB8,0xC1,0x0C,0x10,0xC1,0x0C,0x10,0xC1,0x0C,0x00,0x80,0x00, // 'r' - 0x7F,0xCB,0xF8,0xC0,0x0E,0x00,0xF0,0x0F,0x00,0xD0,0x0D,0x00,0xBB,0x83,0xBA,0x01,0x60,0x16,0x01,0x60,0x16,0x01,0x60,0x06,0x3F,0xA7,0xFC, // 's' - 0xFF,0x9F,0xC0,0x00,0x60,0x18,0x06,0x01,0x80,0x20,0x00,0x00,0x00,0x80,0x60,0x18,0x06,0x01,0x80, // 't' - 0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x68,0x02,0x80,0x2C,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6B,0xFA,0x7F,0xC0, // 'u' - 0x80,0x60,0x30,0x58,0x2C,0x16,0x0B,0x05,0x00,0x80,0x68,0x34,0x1E,0x0F,0x07,0x03,0x01,0x00, // 'v' - 0x80,0x2C,0x06,0xCC,0x6C,0xC6,0xCC,0x6C,0xC6,0xC4,0x68,0x02,0x80,0x2D,0x16,0xD1,0x6F,0x16,0xF1,0x6E,0x16,0xC0,0x68,0x02, // 'w' - 0x85,0x8B,0x12,0x24,0x40,0x00,0x22,0x45,0x8B,0x14,0x20, // 'x' - 0x85,0x8B,0x12,0x24,0x40,0x00,0x08,0x30,0x60,0xC1,0x80, // 'y' - 0xFF,0x9F,0xC0,0x00,0x08,0x02,0x00,0x80,0x20,0x08,0x00,0x00,0x02,0x00,0x80,0x60,0x18,0x04,0x00,0x00,0x7F,0x3F,0xE0, // 'z' - 0xFA,0x28,0xA2,0x8A,0x28,0xA2,0x8A,0x28,0xBE, // '{' - 0xDB,0x64,0x02,0xDB,0x60, // '|' - 0xFA,0x28,0xA2,0x8A,0x28,0xA2,0x8A,0x28,0xBE // '}' -}; -const GFXglyph DSEG14_Classic_Bold_18Glyphs[] PROGMEM = { -// bitmapOffset, width, height, xAdvance, xOffset, yOffset - { 0, 1, 1, 5, 0, 0 }, // ' ' - { 1, 1, 1, 16, 0, 0 }, // '!' - { 2, 7, 8, 16, 2, -17 }, // '"' - { 9, 6, 12, 8, 1, -12 }, // '#' - { 18, 12, 18, 16, 2, -18 }, // '$' - { 45, 12, 16, 16, 2, -17 }, // '%' - { 69, 11, 18, 16, 3, -18 }, // '&' - { 94, 3, 6, 16, 6, -15 }, // ''' - { 97, 2, 12, 16, 9, -15 }, // '(' - { 100, 3, 12, 16, 4, -15 }, // ')' - { 105, 10, 12, 16, 3, -15 }, // '*' - { 120, 10, 12, 16, 3, -15 }, // '+' - { 135, 3, 5, 16, 4, -8 }, // ',' - { 137, 10, 2, 16, 3, -10 }, // '-' - { 140, 3, 2, 1, -1, -2 }, // '.' - { 141, 7, 12, 16, 4, -15 }, // '/' - { 152, 12, 18, 16, 2, -18 }, // '0' - { 179, 3, 16, 16, 11, -17 }, // '1' - { 185, 12, 18, 16, 2, -18 }, // '2' - { 212, 11, 18, 16, 3, -18 }, // '3' - { 237, 12, 16, 16, 2, -17 }, // '4' - { 261, 12, 18, 16, 2, -18 }, // '5' - { 288, 12, 18, 16, 2, -18 }, // '6' - { 315, 12, 17, 16, 2, -18 }, // '7' - { 341, 12, 18, 16, 2, -18 }, // '8' - { 368, 12, 18, 16, 2, -18 }, // '9' - { 395, 3, 10, 5, 1, -14 }, // ':' - { 399, 6, 12, 8, 1, -12 }, // ';' - { 408, 10, 15, 16, 3, -15 }, // '<' - { 427, 10, 10, 16, 3, -10 }, // '=' - { 440, 10, 15, 16, 3, -15 }, // '>' - { 459, 12, 15, 16, 2, -18 }, // '?' - { 482, 12, 18, 16, 2, -18 }, // '@' - { 509, 12, 17, 16, 2, -18 }, // 'A' - { 535, 11, 18, 16, 3, -18 }, // 'B' - { 560, 11, 18, 16, 2, -18 }, // 'C' - { 585, 11, 18, 16, 3, -18 }, // 'D' - { 610, 11, 18, 16, 2, -18 }, // 'E' - { 635, 11, 17, 16, 2, -18 }, // 'F' - { 659, 12, 18, 16, 2, -18 }, // 'G' - { 686, 12, 16, 16, 2, -17 }, // 'H' - { 710, 10, 18, 16, 3, -18 }, // 'I' - { 733, 12, 17, 16, 2, -17 }, // 'J' - { 759, 9, 16, 16, 2, -17 }, // 'K' - { 777, 11, 17, 16, 2, -17 }, // 'L' - { 801, 12, 16, 16, 2, -17 }, // 'M' - { 825, 12, 16, 16, 2, -17 }, // 'N' - { 849, 12, 18, 16, 2, -18 }, // 'O' - { 876, 12, 17, 16, 2, -18 }, // 'P' - { 902, 12, 18, 16, 2, -18 }, // 'Q' - { 929, 12, 17, 16, 2, -18 }, // 'R' - { 955, 12, 18, 16, 2, -18 }, // 'S' - { 982, 10, 15, 16, 3, -18 }, // 'T' - { 1001, 12, 17, 16, 2, -17 }, // 'U' - { 1027, 9, 16, 16, 2, -17 }, // 'V' - { 1045, 12, 16, 16, 2, -17 }, // 'W' - { 1069, 7, 12, 16, 4, -15 }, // 'X' - { 1080, 7, 12, 16, 4, -15 }, // 'Y' - { 1091, 10, 18, 16, 3, -18 }, // 'Z' - { 1114, 6, 12, 8, 1, -12 }, // '[' - { 1123, 7, 12, 16, 4, -15 }, // '\' - { 1134, 6, 12, 8, 1, -12 }, // ']' - { 1143, 5, 8, 16, 2, -17 }, // '^' - { 1148, 10, 2, 16, 3, -2 }, // '_' - { 1151, 3, 5, 16, 4, -15 }, // '`' - { 1153, 12, 17, 16, 2, -18 }, // 'a' - { 1179, 11, 18, 16, 3, -18 }, // 'b' - { 1204, 11, 18, 16, 2, -18 }, // 'c' - { 1229, 11, 18, 16, 3, -18 }, // 'd' - { 1254, 11, 18, 16, 2, -18 }, // 'e' - { 1279, 11, 17, 16, 2, -18 }, // 'f' - { 1303, 12, 18, 16, 2, -18 }, // 'g' - { 1330, 12, 16, 16, 2, -17 }, // 'h' - { 1354, 10, 18, 16, 3, -18 }, // 'i' - { 1377, 12, 17, 16, 2, -17 }, // 'j' - { 1403, 9, 16, 16, 2, -17 }, // 'k' - { 1421, 11, 17, 16, 2, -17 }, // 'l' - { 1445, 12, 16, 16, 2, -17 }, // 'm' - { 1469, 12, 16, 16, 2, -17 }, // 'n' - { 1493, 12, 18, 16, 2, -18 }, // 'o' - { 1520, 12, 17, 16, 2, -18 }, // 'p' - { 1546, 12, 18, 16, 2, -18 }, // 'q' - { 1573, 12, 17, 16, 2, -18 }, // 'r' - { 1599, 12, 18, 16, 2, -18 }, // 's' - { 1626, 10, 15, 16, 3, -18 }, // 't' - { 1645, 12, 17, 16, 2, -17 }, // 'u' - { 1671, 9, 16, 16, 2, -17 }, // 'v' - { 1689, 12, 16, 16, 2, -17 }, // 'w' - { 1713, 7, 12, 16, 4, -15 }, // 'x' - { 1724, 7, 12, 16, 4, -15 }, // 'y' - { 1735, 10, 18, 16, 3, -18 }, // 'z' - { 1758, 6, 12, 8, 1, -12 }, // '{' - { 1767, 3, 12, 16, 6, -15 }, // '|' - { 1772, 6, 12, 8, 1, -12 } // '}' -}; -const GFXfont DSEG14_Classic_Bold_18 PROGMEM = { -(uint8_t *)DSEG14_Classic_Bold_18Bitmaps,(GFXglyph *)DSEG14_Classic_Bold_18Glyphs,0x20, 0x7E, 20}; \ No newline at end of file diff --git a/examples/Watchy_Button_Test/DSEG7_Classic_Bold_48.h b/examples/Watchy_Button_Test/DSEG7_Classic_Bold_48.h deleted file mode 100644 index a53a97f..0000000 --- a/examples/Watchy_Button_Test/DSEG7_Classic_Bold_48.h +++ /dev/null @@ -1,199 +0,0 @@ -// Created by http://oleddisplay.squix.ch/ Consider a donation -// In case of problems make sure that you are using the font file with the correct version! -const uint8_t DSEG7_Classic_Bold_48Bitmaps[] PROGMEM = { - - // Bitmap Data: - 0x00, // ' ' - 0x00, // '!' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '"' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '#' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '$' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '%' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '&' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ''' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '(' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ')' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '*' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '+' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ',' - 0x1F,0xFF,0xF0,0x3F,0xFF,0xF8,0x7F,0xFF,0xFC,0x7F,0xFF,0xFC,0x3F,0xFF,0xF8,0x1F,0xFF,0xF0, // '-' - 0x79,0xFB,0xF7,0xEF,0xCF,0x00, // '.' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '/' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '0' - 0x00,0x18,0x71,0xE7,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xF9,0xF1,0xE1,0xC1,0x80,0x0E,0x3C,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x3E,0x3C,0x38,0x30,0x00, // '1' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x07,0xFF,0xFF,0x38,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x0F,0xFF,0xF9,0xE0,0x7F,0xFF,0xF3,0x83,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0x0F,0xBF,0xFF,0xE0,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0x3D,0xFF,0xFF,0xC0,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '2' - 0x7F,0xFF,0xFF,0x0F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xE6,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0x9E,0x00,0x00,0x03,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x03,0xE0,0xFF,0xFF,0x9E,0x1F,0xFF,0xFC,0xE3,0xFF,0xFF,0xE6,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xCE,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x3E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x7E,0x00,0x00,0x07,0xE0,0x00,0x00,0x3E,0x0F,0xFF,0xF9,0xE1,0xFF,0xFF,0xCE,0x3F,0xFF,0xFE,0x67,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xF0, // '3' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x60,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x80,0x00,0x00,0x00, // '4' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x3F,0xFF,0xE7,0x81,0xFF,0xFF,0xCE,0x0F,0xFF,0xFF,0x98,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '5' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '6' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // '7' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '8' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x3F,0xFF,0xE7,0x81,0xFF,0xFF,0xCE,0x0F,0xFF,0xFF,0x98,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '9' - 0x79,0xF3,0xF7,0xEF,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x9F,0xBF,0x7E,0x78, // ':' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ';' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '<' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '=' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '>' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '?' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '@' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'A' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'B' - 0x03,0xFF,0xFE,0x00,0x7F,0xFF,0xF0,0x0F,0xFF,0xFF,0x8E,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0x5F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC0, // 'C' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0xFF,0xFF,0x9E,0x07,0xFF,0xFF,0x38,0x3F,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'D' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'E' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xF8,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'F' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'G' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'H' - 0x1C,0x79,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0x7C,0x78,0x70,0x60,0x00, // 'I' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'J' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'K' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0x80,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF8,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'L' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'M' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0x40,0x00,0x00,0x00, // 'N' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x5F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x00, // 'O' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0x0F,0xBF,0xFF,0xE0,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00, // 'P' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // 'Q' - 0x03,0xFF,0xFE,0x00,0xFF,0xFF,0xE0,0x3F,0xFF,0xFE,0x77,0xFF,0xFF,0xCF,0x7F,0xFF,0xF1,0xF7,0xFF,0xFC,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF8,0x00,0x00,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF0,0x00,0x00,0x3C,0x00,0x00,0x07,0x00,0x00,0x00,0x40,0x00,0x00,0x00, // 'R' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x00,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'S' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'T' - 0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'U' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0x00,0x00,0x1E,0xF0,0x00,0x00,0x3B,0x80,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'V' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'W' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'X' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x60,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'Y' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x07,0xFF,0xFF,0x38,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0x3D,0xFF,0xFF,0xC0,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'Z' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '[' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '\' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ']' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '^' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '_' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '`' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'a' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'b' - 0x03,0xFF,0xFE,0x00,0x7F,0xFF,0xF0,0x0F,0xFF,0xFF,0x8E,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0x5F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC0, // 'c' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0xFF,0xFF,0x9E,0x07,0xFF,0xFF,0x38,0x3F,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'd' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'e' - 0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0x0F,0xBF,0xFF,0xE0,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xF8,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'f' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'g' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x0E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'h' - 0x1C,0x79,0xF7,0xEF,0xDF,0xBF,0x7E,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E,0x7C,0x78,0x70,0x60,0x00, // 'i' - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'j' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x03,0xEF,0xFF,0xF8,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xEF,0xFF,0xF8,0x0F,0x7F,0xFF,0xF0,0x3B,0xFF,0xFF,0xE0,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0xEF,0xBF,0xFF,0xE7,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'k' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0x80,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF8,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'l' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0x80,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'm' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xE0,0x00,0x01,0xEF,0x00,0x00,0x03,0xB8,0x00,0x00,0x06,0x40,0x00,0x00,0x00, // 'n' - 0x03,0xFF,0xFE,0x00,0x1F,0xFF,0xFC,0x00,0xFF,0xFF,0xF8,0x3B,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x5F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x00, // 'o' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0xEF,0xFF,0xFF,0x83,0xDF,0xFF,0xFC,0x0F,0xBF,0xFF,0xE0,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00, // 'p' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF7,0xFF,0xFF,0x3B,0xEF,0xFF,0xF9,0xEF,0xC0,0x00,0x0F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x00,0xFB,0xEF,0xFF,0xF9,0xEF,0x7F,0xFF,0xF3,0xBB,0xFF,0xFF,0xE6,0x0F,0xFF,0xFF,0x80,0x1F,0xFF,0xFC,0xE0,0x3F,0xFF,0xE7,0x80,0x00,0x00,0x3E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // 'q' - 0x03,0xFF,0xFE,0x00,0xFF,0xFF,0xE0,0x3F,0xFF,0xFE,0x77,0xFF,0xFF,0xCF,0x7F,0xFF,0xF1,0xF7,0xFF,0xFC,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF8,0x00,0x00,0x3F,0x00,0x00,0x07,0xE0,0x00,0x00,0xFC,0x00,0x00,0x1F,0x80,0x00,0x03,0xF0,0x00,0x00,0x7E,0x00,0x00,0x0F,0xC0,0x00,0x01,0xF0,0x00,0x00,0x3C,0x00,0x00,0x07,0x00,0x00,0x00,0x40,0x00,0x00,0x00, // 'r' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3E,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0x03,0xBF,0xFF,0xFE,0x00,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 's' - 0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x80,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0xF7,0xFF,0xFF,0x0E,0xFF,0xFF,0xF8,0xEF,0xFF,0xFF,0x8F,0x7F,0xFF,0xF0,0xFB,0xFF,0xFE,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFC,0x00,0x00,0x0F,0xC0,0x00,0x00,0xFB,0xFF,0xFE,0x0F,0x7F,0xFF,0xF0,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 't' - 0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0xEF,0x80,0x00,0x07,0xBF,0x00,0x00,0x3E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x03,0xEF,0xBF,0xFF,0xE7,0xBD,0xFF,0xFF,0xCE,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'u' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0x00,0x00,0x1E,0xF0,0x00,0x00,0x3B,0x80,0x00,0x00,0x6E,0x00,0x00,0x00,0x3C,0x00,0x00,0x0E,0xF8,0x00,0x00,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'v' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xFB,0xFF,0xFE,0x7B,0xDF,0xFF,0xFC,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'w' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x6E,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xCE,0xFB,0xFF,0xFE,0x7B,0xF0,0x00,0x03,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x3E,0xF8,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'x' - 0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBE,0x00,0x00,0x1E,0xFC,0x00,0x00,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x1F,0xBF,0x00,0x00,0x7E,0xFC,0x00,0x01,0xFB,0xF0,0x00,0x07,0xEF,0xC0,0x00,0x0F,0xBE,0xFF,0xFF,0x9E,0xF7,0xFF,0xFF,0x3B,0xBF,0xFF,0xFE,0x60,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xCE,0x03,0xFF,0xFE,0x78,0x00,0x00,0x03,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3E,0x03,0xFF,0xFE,0x78,0x1F,0xFF,0xFC,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'y' - 0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x07,0xFF,0xFF,0x38,0x0F,0xFF,0xF9,0xE0,0x00,0x00,0x0F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x01,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x3F,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x0F,0xBF,0xFF,0xE0,0x3D,0xFF,0xFF,0xC0,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'z' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '{' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '|' - 0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE // '}' -}; -const GFXglyph DSEG7_Classic_Bold_48Glyphs[] PROGMEM = { -// bitmapOffset, width, height, xAdvance, xOffset, yOffset - { 0, 1, 1, 11, 0, 0 }, // ' ' - { 1, 1, 1, 40, 0, 0 }, // '!' - { 2, 14, 32, 18, 2, -32 }, // '"' - { 58, 14, 32, 18, 2, -32 }, // '#' - { 114, 14, 32, 18, 2, -32 }, // '$' - { 170, 14, 32, 18, 2, -32 }, // '%' - { 226, 14, 32, 18, 2, -32 }, // '&' - { 282, 14, 32, 18, 2, -32 }, // ''' - { 338, 14, 32, 18, 2, -32 }, // '(' - { 394, 14, 32, 18, 2, -32 }, // ')' - { 450, 14, 32, 18, 2, -32 }, // '*' - { 506, 14, 32, 18, 2, -32 }, // '+' - { 562, 14, 32, 18, 2, -32 }, // ',' - { 618, 24, 6, 40, 8, -27 }, // '-' - { 636, 7, 6, 1, -3, -6 }, // '.' - { 642, 14, 32, 18, 2, -32 }, // '/' - { 698, 30, 48, 40, 5, -48 }, // '0' - { 878, 7, 44, 40, 28, -46 }, // '1' - { 917, 30, 48, 40, 5, -48 }, // '2' - { 1097, 28, 48, 40, 7, -48 }, // '3' - { 1265, 30, 44, 40, 5, -46 }, // '4' - { 1430, 30, 48, 40, 5, -48 }, // '5' - { 1610, 30, 48, 40, 5, -48 }, // '6' - { 1790, 30, 46, 40, 5, -48 }, // '7' - { 1963, 30, 48, 40, 5, -48 }, // '8' - { 2143, 30, 48, 40, 5, -48 }, // '9' - { 2323, 7, 25, 11, 2, -36 }, // ':' - { 2345, 14, 32, 18, 2, -32 }, // ';' - { 2401, 14, 32, 18, 2, -32 }, // '<' - { 2457, 14, 32, 18, 2, -32 }, // '=' - { 2513, 14, 32, 18, 2, -32 }, // '>' - { 2569, 14, 32, 18, 2, -32 }, // '?' - { 2625, 14, 32, 18, 2, -32 }, // '@' - { 2681, 30, 46, 40, 5, -48 }, // 'A' - { 2854, 30, 46, 40, 5, -46 }, // 'B' - { 3027, 28, 27, 40, 5, -27 }, // 'C' - { 3122, 30, 46, 40, 5, -46 }, // 'D' - { 3295, 28, 48, 40, 5, -48 }, // 'E' - { 3463, 28, 46, 40, 5, -48 }, // 'F' - { 3624, 30, 48, 40, 5, -48 }, // 'G' - { 3804, 30, 44, 40, 5, -46 }, // 'H' - { 3969, 7, 21, 40, 28, -23 }, // 'I' - { 3988, 30, 46, 40, 5, -46 }, // 'J' - { 4161, 30, 46, 40, 5, -48 }, // 'K' - { 4334, 28, 46, 40, 5, -46 }, // 'L' - { 4495, 30, 46, 40, 5, -48 }, // 'M' - { 4668, 30, 25, 40, 5, -27 }, // 'N' - { 4762, 30, 27, 40, 5, -27 }, // 'O' - { 4864, 30, 46, 40, 5, -48 }, // 'P' - { 5037, 30, 46, 40, 5, -48 }, // 'Q' - { 5210, 27, 25, 40, 5, -27 }, // 'R' - { 5295, 30, 46, 40, 5, -46 }, // 'S' - { 5468, 28, 46, 40, 5, -46 }, // 'T' - { 5629, 30, 24, 40, 5, -24 }, // 'U' - { 5719, 30, 46, 40, 5, -46 }, // 'V' - { 5892, 30, 46, 40, 5, -46 }, // 'W' - { 6065, 30, 44, 40, 5, -46 }, // 'X' - { 6230, 30, 46, 40, 5, -46 }, // 'Y' - { 6403, 30, 48, 40, 5, -48 }, // 'Z' - { 6583, 14, 32, 18, 2, -32 }, // '[' - { 6639, 14, 32, 18, 2, -32 }, // '\' - { 6695, 14, 32, 18, 2, -32 }, // ']' - { 6751, 14, 32, 18, 2, -32 }, // '^' - { 6807, 14, 32, 18, 2, -32 }, // '_' - { 6863, 14, 32, 18, 2, -32 }, // '`' - { 6919, 30, 46, 40, 5, -48 }, // 'a' - { 7092, 30, 46, 40, 5, -46 }, // 'b' - { 7265, 28, 27, 40, 5, -27 }, // 'c' - { 7360, 30, 46, 40, 5, -46 }, // 'd' - { 7533, 28, 48, 40, 5, -48 }, // 'e' - { 7701, 28, 46, 40, 5, -48 }, // 'f' - { 7862, 30, 48, 40, 5, -48 }, // 'g' - { 8042, 30, 44, 40, 5, -46 }, // 'h' - { 8207, 7, 21, 40, 28, -23 }, // 'i' - { 8226, 30, 46, 40, 5, -46 }, // 'j' - { 8399, 30, 46, 40, 5, -48 }, // 'k' - { 8572, 28, 46, 40, 5, -46 }, // 'l' - { 8733, 30, 46, 40, 5, -48 }, // 'm' - { 8906, 30, 25, 40, 5, -27 }, // 'n' - { 9000, 30, 27, 40, 5, -27 }, // 'o' - { 9102, 30, 46, 40, 5, -48 }, // 'p' - { 9275, 30, 46, 40, 5, -48 }, // 'q' - { 9448, 27, 25, 40, 5, -27 }, // 'r' - { 9533, 30, 46, 40, 5, -46 }, // 's' - { 9706, 28, 46, 40, 5, -46 }, // 't' - { 9867, 30, 24, 40, 5, -24 }, // 'u' - { 9957, 30, 46, 40, 5, -46 }, // 'v' - { 10130, 30, 46, 40, 5, -46 }, // 'w' - { 10303, 30, 44, 40, 5, -46 }, // 'x' - { 10468, 30, 46, 40, 5, -46 }, // 'y' - { 10641, 30, 48, 40, 5, -48 }, // 'z' - { 10821, 14, 32, 18, 2, -32 }, // '{' - { 10877, 14, 32, 18, 2, -32 }, // '|' - { 10933, 14, 32, 18, 2, -32 } // '}' -}; -const GFXfont DSEG7_Classic_Bold_48 PROGMEM = { -(uint8_t *)DSEG7_Classic_Bold_48Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_48Glyphs,0x20, 0x7E, 53}; diff --git a/examples/Watchy_Button_Test/Watchy_Button_Test.ino b/examples/Watchy_Button_Test/Watchy_Button_Test.ino deleted file mode 100644 index ede7a94..0000000 --- a/examples/Watchy_Button_Test/Watchy_Button_Test.ino +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Watchy - Button Test Example - * Watchy Basic + testing all 4 buttons - * - * ============== - * |--------------| - * (IO34) BTN 3 | | BTN 1 (IO39) - * | | - * | | - * | | - * (IO35) BTN 4 | | BTN 2 (IO36) - * |--------------| - * ============== - */ - -#ifndef ESP32 -#error Please select ESP32 Wrover Module under Tools > Board -#endif - -#include -#include -#include "DSEG7_Classic_Bold_48.h" -#include "DSEG14_Classic_Bold_18.h" - -#define VIB_MOTOR_PIN 27 -#define RTC_PIN GPIO_NUM_33 -#define BTN_1 GPIO_SEL_39 -#define BTN_2 GPIO_SEL_36 -#define BTN_3 GPIO_SEL_34 -#define BTN_4 GPIO_SEL_35 -#define BTN_PIN_MASK BTN_1|BTN_2|BTN_3|BTN_4 - -DS3232RTC RTC(false); -GxEPD2_BW display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 - - -void setup() -{ - esp_sleep_wakeup_cause_t wakeup_reason; - wakeup_reason = esp_sleep_get_wakeup_cause(); - - switch(wakeup_reason) - { - case ESP_SLEEP_WAKEUP_EXT0: updateTime(false); break; //RTC Alarm Interrupt - case ESP_SLEEP_WAKEUP_EXT1: handleButton(); break; //Button Press - default: updateTime(true); //Hard Reset - } - - esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt - esp_sleep_enable_ext1_wakeup(BTN_PIN_MASK, ESP_EXT1_WAKEUP_ANY_HIGH); //enable deep sleep wake on button press - esp_deep_sleep_start(); -} - -void loop(){} - -void handleButton() -{ - uint64_t wakeupBit = esp_sleep_get_ext1_wakeup_status(); - - pinMode(VIB_MOTOR_PIN, OUTPUT); - digitalWrite(VIB_MOTOR_PIN, HIGH); - delay(100); - digitalWrite(VIB_MOTOR_PIN, LOW); - - display.init(); - display.fillScreen(GxEPD_WHITE); - display.setTextColor(GxEPD_BLACK); - display.setFont(&DSEG14_Classic_Bold_18); - - display.setCursor(15, 100); - display.println("You pressed"); - display.setCursor(65, 140); - if (wakeupBit & BTN_4) { - display.println("BTN 4"); - } - else if (wakeupBit & BTN_3) { - display.println("BTN 3"); - } - else if (wakeupBit & BTN_2) { - display.println("BTN 2"); - } - else if (wakeupBit & BTN_1) { - display.println("BTN 1"); - } - display.display(false); - display.hibernate(); -} - -void updateTime(bool reset) -{ - RTC.begin(); - if(reset){ - RTC.squareWave(SQWAVE_NONE); //disable square wave output - RTC.set(compileTime()); //set RTC time to compile time - RTC.setAlarm(ALM2_EVERY_MINUTE, 0, 0, 0, 0); - RTC.alarmInterrupt(ALARM_2, true); //enable alarm interrupt - } - RTC.alarm(ALARM_2); //resets the alarm flag in the RTC - tmElements_t currentTime; - RTC.read(currentTime); - - display.init(0, reset); //_initial_refresh to false to prevent full update on init - display.setFullWindow(); - display.fillScreen(GxEPD_BLACK); - display.setTextColor(GxEPD_WHITE); - display.setFont(&DSEG7_Classic_Bold_48); - display.setCursor(15, 120); - - if(currentTime.Hour < 10){ - display.print('0'); - } - display.print(currentTime.Hour); - display.print(':'); - if(currentTime.Minute < 10){ - display.print('0'); - } - display.print(currentTime.Minute); - display.display(true); //partial refresh - display.hibernate(); -} - -time_t compileTime() -{ - const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) - const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec"; - char compMon[3], *m; - - strncpy(compMon, compDate, 3); - compMon[3] = '\0'; - m = strstr(months, compMon); - - tmElements_t tm; - tm.Month = ((m - months) / 3 + 1); - tm.Day = atoi(compDate + 4); - tm.Year = atoi(compDate + 7) - 1970; - tm.Hour = atoi(compTime); - tm.Minute = atoi(compTime + 3); - tm.Second = atoi(compTime + 6); - - time_t t = makeTime(tm); - return t + FUDGE; //add fudge factor to allow for compile time -} \ No newline at end of file diff --git a/examples/Watchy_DOS/Px437_IBM_BIOS5pt7b.h b/examples/Watchy_DOS/Px437_IBM_BIOS5pt7b.h deleted file mode 100644 index 72c4222..0000000 --- a/examples/Watchy_DOS/Px437_IBM_BIOS5pt7b.h +++ /dev/null @@ -1,174 +0,0 @@ -//created using https://rop.nl/truetype2gfx/ -//https://github.com/ropg/truetype2gfx -//@ropg -//Px437_IBM_BIOS.ttf - -const uint8_t Px437_IBM_BIOS5pt7bBitmaps[] PROGMEM = { - 0x00, 0x73, 0xFF, 0xF7, 0x39, 0xC0, 0x70, 0xEF, 0xDF, 0xBF, 0x70, 0x77, - 0x3B, 0x9D, 0xDF, 0xF7, 0x77, 0xFF, 0xDC, 0xEE, 0x77, 0x00, 0x38, 0x3F, - 0x7F, 0xE0, 0x7C, 0x07, 0x04, 0xFC, 0x38, 0xE3, 0xF1, 0xF9, 0xC1, 0x83, - 0x81, 0x9D, 0xCF, 0xC7, 0x3C, 0x1B, 0x9D, 0xC7, 0x87, 0xBF, 0x7B, 0xBD, - 0xCE, 0x7B, 0x80, 0x77, 0x7E, 0x18, 0x9D, 0xCE, 0x73, 0xCE, 0x18, 0xE7, - 0x9C, 0x31, 0x8C, 0x4E, 0xE0, 0x73, 0x9C, 0xE3, 0xF3, 0xFF, 0x3F, 0x0C, - 0xE7, 0x38, 0x38, 0x38, 0x38, 0xFF, 0x38, 0x38, 0x38, 0x77, 0x7E, 0xFF, - 0xFF, 0x80, 0x03, 0x81, 0x81, 0xC1, 0x83, 0x83, 0x81, 0x81, 0xC0, 0x80, - 0x00, 0x7F, 0x31, 0xF8, 0xFC, 0xFE, 0xFF, 0xDF, 0xCF, 0xE7, 0x7F, 0x00, - 0x38, 0x38, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0x7C, 0x67, 0xE7, - 0x07, 0x3C, 0x70, 0x67, 0xE7, 0xFF, 0x7C, 0x67, 0xE7, 0x07, 0x3C, 0x07, - 0xE7, 0xE7, 0x7C, 0x0F, 0x07, 0x8F, 0xCE, 0xEE, 0x77, 0xFF, 0xFC, 0x0E, - 0x0F, 0x80, 0xFF, 0xE0, 0xE0, 0xFC, 0x07, 0x07, 0xE7, 0xE7, 0x7C, 0x3C, - 0x30, 0x70, 0xE0, 0xFC, 0xE7, 0xE7, 0xE7, 0x7C, 0xFF, 0xE7, 0xE7, 0x07, - 0x0C, 0x38, 0x38, 0x38, 0x38, 0x7C, 0x67, 0xE7, 0xE7, 0x7C, 0xE7, 0xE7, - 0xE7, 0x7C, 0x7C, 0x67, 0xE7, 0xE7, 0x7F, 0x07, 0x04, 0x0C, 0x78, 0xFF, - 0x81, 0xFF, 0x77, 0x70, 0x07, 0x77, 0xE0, 0x0C, 0x23, 0x9C, 0xE1, 0xC7, - 0x8E, 0x0C, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xE1, 0xE1, 0xC0, 0xC0, 0xE3, - 0x04, 0x38, 0xE0, 0x7C, 0x67, 0xE7, 0x07, 0x0C, 0x38, 0x38, 0x00, 0x38, - 0x7F, 0x31, 0xF8, 0xFD, 0xFE, 0xFF, 0x7F, 0xBF, 0xC0, 0x7C, 0x00, 0x38, - 0x3C, 0x7C, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7, 0xFF, 0x79, 0xDC, 0xEE, - 0x77, 0xF3, 0x9D, 0xCE, 0xE7, 0xFF, 0x00, 0x3F, 0x19, 0xDC, 0xFC, 0x0E, - 0x07, 0x03, 0xCE, 0xE7, 0x3F, 0x00, 0xFC, 0x7B, 0x9D, 0xCE, 0x77, 0x3B, - 0x9D, 0xCC, 0xEE, 0xFC, 0x00, 0xFF, 0xF8, 0xDC, 0x6E, 0x87, 0xC3, 0xA1, - 0xD6, 0xE3, 0xFF, 0x80, 0xFF, 0xF8, 0xDC, 0x6E, 0x87, 0xC3, 0xA1, 0xD0, - 0xE0, 0xF8, 0x00, 0x3F, 0x19, 0xDC, 0xFC, 0x0E, 0x07, 0x3F, 0xDE, 0xE7, - 0x3F, 0x80, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, - 0x9C, 0xE7, 0x39, 0xCE, 0xF8, 0x0F, 0x87, 0x81, 0xC0, 0xE0, 0x77, 0x3B, - 0x9D, 0xCE, 0x7C, 0x00, 0xF3, 0xF9, 0xDC, 0xEE, 0xE7, 0xC3, 0xB9, 0xDE, - 0xE7, 0xF3, 0x80, 0xF8, 0x78, 0x1C, 0x0E, 0x07, 0x03, 0x8D, 0xC6, 0xE7, - 0xFF, 0x80, 0xE3, 0xF9, 0xFD, 0xFF, 0xFF, 0xFF, 0x5F, 0xAF, 0xC7, 0xE3, - 0x80, 0xE3, 0xF9, 0xFC, 0xFF, 0x7E, 0xFF, 0x3F, 0x9F, 0xC7, 0xE3, 0x80, - 0x3C, 0x1B, 0x9D, 0xDC, 0x7E, 0x3F, 0x1F, 0xCC, 0xEE, 0x3C, 0x00, 0xFF, - 0x79, 0xDC, 0xEE, 0x77, 0xF3, 0x81, 0xC0, 0xE0, 0xF8, 0x00, 0x7C, 0x67, - 0xE7, 0xE7, 0xE7, 0xEF, 0xEC, 0x7C, 0x0F, 0xFF, 0x79, 0xDC, 0xEE, 0x77, - 0xF3, 0xB9, 0xDE, 0xE7, 0xF3, 0x80, 0x7C, 0x67, 0xE7, 0xF0, 0x78, 0x0F, - 0xEF, 0xE7, 0x7C, 0xFF, 0xBB, 0xBB, 0x38, 0x38, 0x38, 0x38, 0x38, 0x7C, - 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7, - 0xE7, 0xE7, 0xE7, 0xE4, 0x7C, 0x38, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0xBF, - 0xFF, 0xDF, 0xEF, 0xE3, 0x80, 0xE3, 0xF1, 0xF8, 0xEE, 0xE3, 0xC1, 0xE0, - 0xDC, 0xEE, 0xE3, 0x80, 0xE7, 0xE7, 0xE7, 0xE7, 0x7C, 0x38, 0x38, 0x38, - 0x7C, 0xFF, 0xF1, 0xF8, 0xF0, 0xE0, 0xC1, 0xCC, 0xC6, 0xE7, 0xFF, 0x80, - 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xF8, 0xE0, 0x78, 0x1C, 0x07, 0x00, 0xC0, - 0x38, 0x1E, 0x07, 0x01, 0x80, 0xFF, 0xC6, 0x31, 0x8C, 0x63, 0xF8, 0x08, - 0x06, 0x0F, 0x0E, 0xEE, 0x38, 0xFF, 0xC0, 0xEE, 0xE3, 0x7C, 0x03, 0x9F, - 0xCC, 0xEE, 0x73, 0xDC, 0xF0, 0x78, 0x1C, 0x0E, 0x07, 0xF3, 0x9D, 0xCE, - 0xE7, 0xEF, 0x00, 0x7C, 0xE7, 0xE0, 0xE7, 0xE7, 0x7C, 0x0F, 0x07, 0x81, - 0xC0, 0xE7, 0xF7, 0x3B, 0x9D, 0xCE, 0x7B, 0x80, 0x7C, 0xE7, 0xFF, 0xE0, - 0xE0, 0x7C, 0x3C, 0x37, 0x77, 0x70, 0xF8, 0x70, 0x70, 0x70, 0xF8, 0x7B, - 0xF3, 0xB9, 0xDC, 0xE7, 0xF0, 0x3B, 0xF0, 0xF0, 0x78, 0x1C, 0x0E, 0xE7, - 0xBB, 0x9D, 0xCE, 0xE7, 0xF3, 0x80, 0x73, 0x81, 0xE7, 0x39, 0xCE, 0xF8, - 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7C, 0xF0, 0x78, - 0x1C, 0x0E, 0x77, 0x73, 0xE1, 0xDC, 0xEE, 0xF3, 0x80, 0xF7, 0x9C, 0xE7, - 0x39, 0xCE, 0xF8, 0xE7, 0x7F, 0xFF, 0xFD, 0x7E, 0xBF, 0x1C, 0xFC, 0xE7, - 0xE7, 0xE7, 0xE7, 0xE7, 0x7C, 0xE7, 0xE7, 0xE7, 0xE7, 0x7C, 0xEF, 0x39, - 0xDC, 0xEE, 0x67, 0xF3, 0x83, 0xE0, 0x7B, 0xF3, 0xB9, 0xDC, 0xE7, 0xF0, - 0x38, 0x3E, 0xEF, 0x3D, 0xDC, 0xEE, 0x77, 0x07, 0xC0, 0x7F, 0xE0, 0x7C, - 0x7F, 0x07, 0xFC, 0x10, 0x21, 0xC7, 0xF7, 0x0E, 0x1D, 0xBB, 0x18, 0xE7, - 0x73, 0xB9, 0xDC, 0xEE, 0x73, 0xDC, 0xE7, 0xE7, 0xE7, 0xE4, 0x7C, 0x38, - 0xE3, 0xF5, 0xFF, 0xFF, 0xFF, 0xFB, 0xB8, 0xE3, 0xBB, 0x8F, 0x06, 0xE7, - 0x77, 0x1C, 0xE7, 0xE7, 0xE7, 0xE7, 0x7F, 0x07, 0xFC, 0xFF, 0x8C, 0x38, - 0x33, 0x73, 0xFF, 0x0F, 0x08, 0x38, 0x38, 0xF0, 0x38, 0x38, 0x38, 0x0F, - 0xFF, 0x3F, 0xC0, 0xF0, 0xF8, 0x38, 0x38, 0x0F, 0x38, 0x38, 0x38, 0xF0, - 0x7B, 0xB5, 0xBB, 0xC0 }; - -const GFXglyph Px437_IBM_BIOS5pt7bGlyphs[] PROGMEM = { - { 0, 1, 1, 10, 0, 0 }, // 0x20 ' ' - { 1, 5, 9, 10, 1, -8 }, // 0x21 '!' - { 7, 7, 4, 10, 1, -8 }, // 0x22 '"' - { 11, 9, 9, 10, 0, -8 }, // 0x23 '#' - { 22, 8, 9, 10, 0, -8 }, // 0x24 '$' - { 31, 9, 8, 10, 0, -7 }, // 0x25 '%' - { 40, 9, 9, 10, 0, -8 }, // 0x26 '&' - { 51, 4, 4, 10, 0, -8 }, // 0x27 ''' - { 53, 5, 9, 10, 1, -8 }, // 0x28 '(' - { 59, 5, 9, 10, 1, -8 }, // 0x29 ')' - { 65, 10, 7, 10, 0, -7 }, // 0x2A '*' - { 74, 8, 7, 10, 0, -7 }, // 0x2B '+' - { 81, 4, 4, 10, 1, -2 }, // 0x2C ',' - { 83, 8, 1, 10, 0, -4 }, // 0x2D '-' - { 84, 3, 3, 10, 2, -2 }, // 0x2E '.' - { 86, 9, 9, 10, 0, -8 }, // 0x2F '/' - { 97, 9, 9, 10, 0, -8 }, // 0x30 '0' - { 108, 8, 9, 10, 0, -8 }, // 0x31 '1' - { 117, 8, 9, 10, 0, -8 }, // 0x32 '2' - { 126, 8, 9, 10, 0, -8 }, // 0x33 '3' - { 135, 9, 9, 10, 0, -8 }, // 0x34 '4' - { 146, 8, 9, 10, 0, -8 }, // 0x35 '5' - { 155, 8, 9, 10, 0, -8 }, // 0x36 '6' - { 164, 8, 9, 10, 0, -8 }, // 0x37 '7' - { 173, 8, 9, 10, 0, -8 }, // 0x38 '8' - { 182, 8, 9, 10, 0, -8 }, // 0x39 '9' - { 191, 3, 8, 10, 2, -7 }, // 0x3A ':' - { 194, 4, 9, 10, 1, -7 }, // 0x3B ';' - { 199, 6, 9, 10, 0, -8 }, // 0x3C '<' - { 206, 8, 5, 10, 0, -5 }, // 0x3D '=' - { 211, 7, 9, 10, 1, -8 }, // 0x3E '>' - { 219, 8, 9, 10, 0, -8 }, // 0x3F '?' - { 228, 9, 9, 10, 0, -8 }, // 0x40 '@' - { 239, 8, 9, 10, 0, -8 }, // 0x41 'A' - { 248, 9, 9, 10, 0, -8 }, // 0x42 'B' - { 259, 9, 9, 10, 0, -8 }, // 0x43 'C' - { 270, 9, 9, 10, 0, -8 }, // 0x44 'D' - { 281, 9, 9, 10, 0, -8 }, // 0x45 'E' - { 292, 9, 9, 10, 0, -8 }, // 0x46 'F' - { 303, 9, 9, 10, 0, -8 }, // 0x47 'G' - { 314, 8, 9, 10, 0, -8 }, // 0x48 'H' - { 323, 5, 9, 10, 1, -8 }, // 0x49 'I' - { 329, 9, 9, 10, 0, -8 }, // 0x4A 'J' - { 340, 9, 9, 10, 0, -8 }, // 0x4B 'K' - { 351, 9, 9, 10, 0, -8 }, // 0x4C 'L' - { 362, 9, 9, 10, 0, -8 }, // 0x4D 'M' - { 373, 9, 9, 10, 0, -8 }, // 0x4E 'N' - { 384, 9, 9, 10, 0, -8 }, // 0x4F 'O' - { 395, 9, 9, 10, 0, -8 }, // 0x50 'P' - { 406, 8, 9, 10, 0, -8 }, // 0x51 'Q' - { 415, 9, 9, 10, 0, -8 }, // 0x52 'R' - { 426, 8, 9, 10, 0, -8 }, // 0x53 'S' - { 435, 8, 9, 10, 0, -8 }, // 0x54 'T' - { 444, 8, 9, 10, 0, -8 }, // 0x55 'U' - { 453, 8, 9, 10, 0, -8 }, // 0x56 'V' - { 462, 9, 9, 10, 0, -8 }, // 0x57 'W' - { 473, 9, 9, 10, 0, -8 }, // 0x58 'X' - { 484, 8, 9, 10, 0, -8 }, // 0x59 'Y' - { 493, 9, 9, 10, 0, -8 }, // 0x5A 'Z' - { 504, 5, 9, 10, 1, -8 }, // 0x5B '[' - { 510, 9, 9, 10, 0, -8 }, // 0x5C '\' - { 521, 5, 9, 10, 1, -8 }, // 0x5D ']' - { 527, 9, 5, 10, 0, -8 }, // 0x5E '^' - { 533, 10, 1, 10, 0, 1 }, // 0x5F '_' - { 535, 4, 4, 10, 2, -8 }, // 0x60 '`' - { 537, 9, 6, 10, 0, -5 }, // 0x61 'a' - { 544, 9, 9, 10, 0, -8 }, // 0x62 'b' - { 555, 8, 6, 10, 0, -5 }, // 0x63 'c' - { 561, 9, 9, 10, 0, -8 }, // 0x64 'd' - { 572, 8, 6, 10, 0, -5 }, // 0x65 'e' - { 578, 8, 9, 10, 0, -8 }, // 0x66 'f' - { 587, 9, 7, 10, 0, -5 }, // 0x67 'g' - { 595, 9, 9, 10, 0, -8 }, // 0x68 'h' - { 606, 5, 9, 10, 1, -8 }, // 0x69 'i' - { 612, 8, 10, 10, 0, -8 }, // 0x6A 'j' - { 622, 9, 9, 10, 0, -8 }, // 0x6B 'k' - { 633, 5, 9, 10, 1, -8 }, // 0x6C 'l' - { 639, 9, 6, 10, 0, -5 }, // 0x6D 'm' - { 646, 8, 6, 10, 0, -5 }, // 0x6E 'n' - { 652, 8, 6, 10, 0, -5 }, // 0x6F 'o' - { 658, 9, 7, 10, 0, -5 }, // 0x70 'p' - { 666, 9, 7, 10, 0, -5 }, // 0x71 'q' - { 674, 9, 6, 10, 0, -5 }, // 0x72 'r' - { 681, 8, 6, 10, 0, -5 }, // 0x73 's' - { 687, 7, 9, 10, 1, -8 }, // 0x74 't' - { 695, 9, 6, 10, 0, -5 }, // 0x75 'u' - { 702, 8, 6, 10, 0, -5 }, // 0x76 'v' - { 708, 9, 6, 10, 0, -5 }, // 0x77 'w' - { 715, 9, 6, 10, 0, -5 }, // 0x78 'x' - { 722, 8, 7, 10, 0, -5 }, // 0x79 'y' - { 729, 8, 6, 10, 0, -5 }, // 0x7A 'z' - { 735, 8, 9, 10, 0, -8 }, // 0x7B '{' - { 744, 2, 9, 10, 4, -8 }, // 0x7C '|' - { 747, 8, 9, 10, 0, -8 }, // 0x7D '}' - { 756, 9, 3, 10, 0, -8 } }; // 0x7E '~' - -const GFXfont Px437_IBM_BIOS5pt7b PROGMEM = { - (uint8_t *)Px437_IBM_BIOS5pt7bBitmaps, - (GFXglyph *)Px437_IBM_BIOS5pt7bGlyphs, - 0x20, 0x7E, 10 }; - -// Approx. 1432 bytes diff --git a/examples/Watchy_DOS/Watchy_DOS.ino b/examples/Watchy_DOS/Watchy_DOS.ino deleted file mode 100644 index e885168..0000000 --- a/examples/Watchy_DOS/Watchy_DOS.ino +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Watchy - DOS Watchface Example - * Sets the RTC time if not set, goes to sleep and wakes up every minute to update the time on the display - */ - -#ifndef ESP32 -#error Please select ESP32 Wrover Module under Tools > Board -#endif - -#include -#include -#include "Px437_IBM_BIOS5pt7b.h" - -#define RTC_PIN GPIO_NUM_33 - -DS3232RTC RTC(false); -GxEPD2_BW display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 - -void setup() -{ - esp_sleep_wakeup_cause_t wakeup_reason; - wakeup_reason = esp_sleep_get_wakeup_cause(); - switch(wakeup_reason) - { - case ESP_SLEEP_WAKEUP_EXT0: updateTime(false); break; //RTC Alarm Interrupt - default: updateTime(true); //Hard Reset - } - esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt - esp_deep_sleep_start(); -} - -void loop(){} - -void updateTime(bool reset) -{ - RTC.begin(); - if(reset){ - RTC.squareWave(SQWAVE_NONE); //disable square wave output - RTC.set(compileTime()); //set RTC time to compile time - RTC.setAlarm(ALM2_EVERY_MINUTE, 0, 0, 0, 0); - RTC.alarmInterrupt(ALARM_2, true); //enable alarm interrupt - } - RTC.alarm(ALARM_2); //resets the alarm flag in the RTC - tmElements_t currentTime; - RTC.read(currentTime); - - char time[6]; - time[0] = '0' + ((currentTime.Hour/10)%10); - time[1] = '0' + (currentTime.Hour%10); - time[2] = ':'; - time[3] = '0' + ((currentTime.Minute/10)%10); - time[4] = '0' + (currentTime.Minute%10); - time[5] = 0; - - display.init(0, reset); //_initial_refresh to false to prevent full update on init - display.setFullWindow(); - display.fillScreen(GxEPD_BLACK); - display.setTextColor(GxEPD_WHITE); - display.setFont(&Px437_IBM_BIOS5pt7b); - display.setCursor(0, 24); - display.println("WATCHY-DOS 1.1.4"); - display.println("Copyright (c) 2020"); - display.println(" "); - display.print("AUTOEXEC BAT "); - display.println(time); - display.print("COMMAND COM "); - display.println(time); - display.print("CONFIG SYS "); - display.println(time); - display.print("ESPTOOL PY "); - display.println(time); - display.println(" "); - display.println(" 4 files 563 bytes"); - display.println(" 2048 bytes free"); - display.println(" "); - display.println("esptool"); -/* - if(currentTime.Hour < 10){ - display.print('0'); - } - display.print(currentTime.Hour); - display.print(':'); - if(currentTime.Minute < 10){ - display.print('0'); - } - display.print(currentTime.Minute);*/ - display.display(true); //partial refresh - display.hibernate(); -} - -time_t compileTime() -{ - const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) - const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec"; - char compMon[3], *m; - - strncpy(compMon, compDate, 3); - compMon[3] = '\0'; - m = strstr(months, compMon); - - tmElements_t tm; - tm.Month = ((m - months) / 3 + 1); - tm.Day = atoi(compDate + 4); - tm.Year = atoi(compDate + 7) - 1970; - tm.Hour = atoi(compTime); - tm.Minute = atoi(compTime + 3); - tm.Second = atoi(compTime + 6); - - time_t t = makeTime(tm); - return t + FUDGE; //add fudge factor to allow for compile time -} diff --git a/examples/Watchy_Pokemon/Watchy_Pokemon.ino b/examples/Watchy_Pokemon/Watchy_Pokemon.ino deleted file mode 100644 index ae05c53..0000000 --- a/examples/Watchy_Pokemon/Watchy_Pokemon.ino +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Watchy - Pokemon Watchface Example - * Sets the RTC time if not set, goes to sleep and wakes up every minute to update the time on the display - */ - -#ifndef ESP32 -#error Please select ESP32 Wrover Module under Tools > Board -#endif - -#include -#include -#include -#include "pokemon.h" - -#define RTC_PIN GPIO_NUM_33 - -DS3232RTC RTC(false); -GxEPD2_BW display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 - -void setup() -{ - esp_sleep_wakeup_cause_t wakeup_reason; - wakeup_reason = esp_sleep_get_wakeup_cause(); - switch(wakeup_reason) - { - case ESP_SLEEP_WAKEUP_EXT0: updateTime(false); break; //RTC Alarm Interrupt - default: updateTime(true); //Hard Reset - } - esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt - esp_deep_sleep_start(); -} - -void loop(){} - -void updateTime(bool reset) -{ - RTC.begin(); - if(reset){ - RTC.squareWave(SQWAVE_NONE); //disable square wave output - RTC.set(compileTime()); //set RTC time to compile time - RTC.setAlarm(ALM2_EVERY_MINUTE, 0, 0, 0, 0); - RTC.alarmInterrupt(ALARM_2, true); //enable alarm interrupt - } - RTC.alarm(ALARM_2); //resets the alarm flag in the RTC - tmElements_t currentTime; - RTC.read(currentTime); - - display.init(0, reset); //_initial_refresh to false to prevent full update on init - display.setFullWindow(); - display.fillScreen(GxEPD_WHITE); - display.drawBitmap(0, 0, pokemon, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK); - display.setTextColor(GxEPD_BLACK); - display.setFont(&FreeMonoBold12pt7b); - display.setCursor(10, 170); - - if(currentTime.Hour < 10){ - display.print('0'); - } - display.print(currentTime.Hour); - display.print(':'); - if(currentTime.Minute < 10){ - display.print('0'); - } - display.print(currentTime.Minute); - display.display(true); //partial refresh - display.hibernate(); -} - -time_t compileTime() -{ - const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) - const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec"; - char compMon[3], *m; - - strncpy(compMon, compDate, 3); - compMon[3] = '\0'; - m = strstr(months, compMon); - - tmElements_t tm; - tm.Month = ((m - months) / 3 + 1); - tm.Day = atoi(compDate + 4); - tm.Year = atoi(compDate + 7) - 1970; - tm.Hour = atoi(compTime); - tm.Minute = atoi(compTime + 3); - tm.Second = atoi(compTime + 6); - - time_t t = makeTime(tm); - return t + FUDGE; //add fudge factor to allow for compile time -} diff --git a/examples/Watchy_Pokemon/pokemon.h b/examples/Watchy_Pokemon/pokemon.h deleted file mode 100644 index 33beb43..0000000 --- a/examples/Watchy_Pokemon/pokemon.h +++ /dev/null @@ -1,316 +0,0 @@ -// 'pokemo13', 200x200px -const unsigned char pokemon [] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xef, 0xfa, 0x06, 0xff, 0xbf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x02, - 0x06, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x03, 0x04, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x08, 0x01, 0x8c, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xcf, 0xf1, 0x8c, 0xff, 0x3f, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x08, 0x00, 0x50, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0xd0, 0x80, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3e, 0x8f, 0xa0, 0x30, 0xfa, 0x3e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xef, 0xf8, 0x20, - 0xff, 0xbf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x83, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x42, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x63, 0x42, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, - 0x42, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc6, 0x23, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x07, 0xf2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x1a, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x08, 0x1a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x0a, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x4f, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x4f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x5d, 0xa1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0xdf, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x07, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, - 0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x1b, 0x10, 0x00, - 0x00, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x0d, 0x90, 0x00, 0x00, 0xbb, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, - 0xc8, 0x00, 0x00, 0xe7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe8, 0x00, 0x01, 0x3f, 0xfc, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0xe4, 0x00, 0x02, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0xf4, 0x66, 0x0d, 0xff, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x80, 0x00, 0x00, 0x01, 0xf6, 0x66, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x01, 0x33, 0x89, 0xd7, - 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf0, 0x00, 0x00, 0x01, 0x16, 0x00, 0x2f, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x01, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x01, 0xf8, 0x1a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x14, 0x01, 0x83, 0xf8, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x05, 0xc7, 0xe0, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0x02, 0x27, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x02, 0xe7, 0x00, - 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x03, 0xef, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x03, - 0xef, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x03, 0xef, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x71, 0xcf, 0x03, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x1e, 0x04, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0xf8, 0x7e, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf3, 0xff, 0x18, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0xf1, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xff, 0xf0, - 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xff, 0xc0, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, - 0x00, 0x00, 0x60, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x08, 0x00, 0x00, 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x70, 0x01, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0x00, 0x20, 0xf8, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x21, 0xf8, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1c, 0x00, - 0xf1, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x81, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x07, 0x03, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xee, 0x7b, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x19, 0xf8, 0xfc, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x19, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xf8, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf1, 0xfc, 0x83, 0x02, 0x03, 0xe2, 0x06, 0x81, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, - 0x20, 0x84, 0x05, 0x06, 0x1a, 0x06, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x60, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x20, 0x8c, 0x0d, 0x0c, 0x02, 0x06, 0x81, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xce, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x08, 0x08, 0x20, 0x88, 0x05, 0x08, 0x02, 0x06, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xce, - 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x20, 0xb8, 0x18, 0x88, 0x03, - 0xfe, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0x80, - 0x00, 0x00, 0x08, 0x00, 0x20, 0xe4, 0x1f, 0xc8, 0x02, 0x02, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xc3, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x08, 0x00, 0x20, 0x82, 0x20, - 0x64, 0x0a, 0x06, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc1, 0xe0, 0x7f, 0x00, 0x00, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0x08, 0x00, 0xf8, 0x81, 0x20, 0x63, 0xe2, 0x02, 0x3f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x01, 0xc0, 0x70, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x08, 0x01, 0xf8, - 0x80, 0xa0, 0x21, 0xe2, 0x02, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x7f, 0x00, - 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x1f, 0xe0, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, - 0x1f, 0xe0, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x1f, 0xf8, 0x00, 0x0f, 0xfc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x03, 0x9c, 0x38, 0x00, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x9c, 0x38, 0x00, 0x0e, 0x1c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x80, 0xe3, 0xff, 0xff, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0xe3, 0xff, 0xff, - 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc3, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0xe3, 0xff, 0xff, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf1, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe7, - 0xe0, 0x01, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe7, 0xe0, 0x01, 0xc0, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x03, 0xe3, 0x00, 0x01, 0x80, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x03, 0xe3, 0x00, 0x01, 0x80, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x01, 0xf0, 0x7c, 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x4f, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x7c, 0x1c, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x07, 0x4f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, - 0x00, 0x00, 0x01, 0xc0, 0x7c, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0x5d, 0xa1, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x18, 0x00, - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf8, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x18, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x07, - 0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x01, 0xf0, 0x70, - 0x78, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x70, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, - 0x00, 0x00, 0x0e, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x1f, 0x80, 0x08, 0x00, 0x0c, 0x1f, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3f, 0xc0, 0x10, 0x00, 0x1c, 0x3f, 0xc0, - 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xe3, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x38, 0xe0, 0x20, 0x00, 0x1c, 0x38, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xe3, 0x00, - 0x00, 0x00, 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x38, 0xe0, 0x40, 0x00, 0x0c, - 0x38, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0xff, 0x83, 0x80, 0x00, 0x00, 0x7e, 0x0c, 0x60, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x1f, 0xe0, 0x80, 0x00, 0x0c, 0x1f, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0xff, - 0x83, 0x80, 0x00, 0x00, 0x7e, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe1, 0x00, - 0x00, 0x0c, 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0xff, 0x83, 0xe0, 0x00, 0x00, 0x3c, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x0e, 0xc0, 0x00, 0x00, 0x3f, 0x0e, 0xc0, 0xc0, 0x00, 0x00, - 0x01, 0xfe, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x9f, - 0x84, 0x00, 0x00, 0x7f, 0x9f, 0x80, 0xc0, 0x00, 0x00, 0x01, 0xfe, 0x0f, 0xfc, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x00, 0x00, 0x00, 0x7f, 0x9f, 0xff, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0x9f, 0xff, 0xe0, - 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x9c, 0x1f, 0xf8, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x01, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x9c, - 0x07, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x9c, 0x07, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, - 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, - 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x16, 0x7f, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x16, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0x58, 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xdc, 0x7f, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x61, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x61, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, - 0x86, 0x33, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x7f, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xcc, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x78, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x0b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x0f, 0xf9, 0xfc, 0x3e, 0x20, - 0x6f, 0xf8, 0x00, 0xf0, 0x33, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x1c, 0x08, 0x00, 0x20, 0x61, 0xa0, 0x60, 0x80, 0x00, 0xb0, 0x2d, 0x00, 0x00, - 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1e, 0x08, 0x00, 0x20, - 0xc0, 0x20, 0x60, 0x80, 0x00, 0xf0, 0x21, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x1e, 0x08, 0x00, 0x20, 0x80, 0x20, 0x60, 0x80, 0x00, 0xf0, 0x21, - 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1f, 0x0f, - 0xf0, 0x20, 0x8f, 0xbf, 0xe0, 0x80, 0x00, 0x85, 0xa1, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1f, 0xc8, 0x00, 0x20, 0x81, 0xa0, 0x20, 0x80, 0x00, - 0x85, 0xa2, 0x60, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x1f, 0x08, 0x00, 0x20, 0x41, 0xa0, 0x60, 0x80, 0x00, 0x07, 0x03, 0x20, 0x00, 0xd0, 0x34, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1f, 0x08, 0x00, 0xf8, 0x3f, 0x20, 0x20, - 0x80, 0x00, 0x07, 0x03, 0xe0, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x1e, 0x08, 0x01, 0xf8, 0x1e, 0x20, 0x20, 0x80, 0x00, 0x05, 0x82, 0xe0, 0x00, 0xd0, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x82, 0x60, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x07, - 0xe3, 0xfe, 0xff, 0xa0, 0x60, 0x00, 0x00, 0xff, 0x20, 0x28, 0x08, 0xd0, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, 0x30, 0xe0, 0x00, 0x00, - 0x80, 0xa0, 0x2c, 0x08, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, - 0x00, 0x00, 0x80, 0x20, 0x80, 0x30, 0xe0, 0x00, 0x00, 0x80, 0xa0, 0x2c, 0x08, 0x50, 0x34, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, 0x25, 0x20, - 0x00, 0x00, 0x81, 0xa0, 0x29, 0x18, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0xfe, 0x22, 0x20, 0x00, 0x00, 0xff, 0x20, 0x68, 0x98, 0x50, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, - 0x20, 0x20, 0x00, 0x00, 0x84, 0x20, 0x68, 0x48, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, 0x20, 0x20, 0x00, 0x00, 0x82, 0x10, 0x68, - 0x38, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x03, 0xe0, - 0x20, 0xee, 0x20, 0x60, 0x00, 0x00, 0x81, 0x06, 0xe8, 0x18, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x07, 0xe0, 0x20, 0xff, 0xa0, 0x20, 0x00, 0x00, 0x80, - 0x87, 0xe8, 0x08, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x17, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0xe5, 0x80, 0x00, 0xf2, - 0x80, 0x03, 0xf8, 0x00, 0x1e, 0x10, 0x01, 0x18, 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, - 0x5c, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x60, 0xbf, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x60, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xfd, 0x82, 0x33, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x7f, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc8, 0x1a, 0x7f, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x7f, 0xff, 0xd0, 0x60, 0x04, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; diff --git a/extras/Watchy.jpg b/extras/Watchy.jpg deleted file mode 100644 index 47e635a..0000000 Binary files a/extras/Watchy.jpg and /dev/null differ diff --git a/library.properties b/library.properties index f818cac..a290125 100644 --- a/library.properties +++ b/library.properties @@ -1,9 +1,10 @@ name=Watchy -version=1.1.6 +version=1.1.7 author=SQFMI maintainer=SQFMI -sentence=Watchy - An Open Source E-Ink SmartWatch by SQFMI +sentence=Watchy - An Open Source E-Paper Watch by SQFMI paragraph=This library contains drivers and code samples for Watchy category=Other -url=https://github.com/sqfmi/Watchy -depends=GxEPD2,DS3232RTC +url=https://watchy.sqfmi.com +architectures=esp32 +depends=Adafruit GFX Library,Arduino_JSON,DS3232RTC,GxEPD2,WiFiManager diff --git a/src/BLE.cpp b/src/BLE.cpp new file mode 100644 index 0000000..ce6a032 --- /dev/null +++ b/src/BLE.cpp @@ -0,0 +1,153 @@ +#include "BLE.h" + +#define SERVICE_UUID_ESPOTA "cd77498e-1ac8-48b6-aba8-4161c7342fce" +#define CHARACTERISTIC_UUID_ID "cd77498f-1ac8-48b6-aba8-4161c7342fce" + +#define SERVICE_UUID_OTA "86b12865-4b70-4893-8ce6-9864fc00374d" +#define CHARACTERISTIC_UUID_FW "86b12866-4b70-4893-8ce6-9864fc00374d" +#define CHARACTERISTIC_UUID_HW_VERSION "86b12867-4b70-4893-8ce6-9864fc00374d" +#define CHARACTERISTIC_UUID_WATCHFACE_NAME "86b12868-4b70-4893-8ce6-9864fc00374d" + +#define FULL_PACKET 512 +#define CHARPOS_UPDATE_FLAG 5 + +#define STATUS_CONNECTED 0 +#define STATUS_DISCONNECTED 4 +#define STATUS_UPDATING 1 +#define STATUS_READY 2 + +esp_ota_handle_t otaHandler = 0; + +int status = -1; +int bytesReceived = 0; +bool updateFlag = false; + + +class BLECustomServerCallbacks: public BLEServerCallbacks { + void onConnect(BLEServer* pServer) { + status = STATUS_CONNECTED; + }; + + void onDisconnect(BLEServer* pServer) { + status = STATUS_DISCONNECTED; + } +}; + +class otaCallback: public BLECharacteristicCallbacks { + public: + otaCallback(BLE* ble) { + _p_ble = ble; + } + BLE* _p_ble; + + void onWrite(BLECharacteristic *pCharacteristic); +}; + +void otaCallback::onWrite(BLECharacteristic *pCharacteristic) +{ + std::string rxData = pCharacteristic->getValue(); + if (!updateFlag) { //If it's the first packet of OTA since bootup, begin OTA + //Serial.println("Begin FW Update"); + esp_ota_begin(esp_ota_get_next_update_partition(NULL), OTA_SIZE_UNKNOWN, &otaHandler); + updateFlag = true; + status = STATUS_UPDATING; + } + if (_p_ble != NULL) + { + if (rxData.length() > 0) + { + esp_ota_write(otaHandler, rxData.c_str(), rxData.length()); + bytesReceived = bytesReceived + rxData.length(); + if (rxData.length() != FULL_PACKET) + { + esp_ota_end(otaHandler); + //Serial.println("End FW Update"); + if (ESP_OK == esp_ota_set_boot_partition(esp_ota_get_next_update_partition(NULL))) { + status = STATUS_READY; + } + else { + //Serial.println("Upload Error"); + } + } + } + } + + uint8_t txData[5] = {1, 2, 3, 4, 5}; + //delay(1000); + pCharacteristic->setValue((uint8_t*)txData, 5); + pCharacteristic->notify(); +} + +// +// Constructor +BLE::BLE(void) { + +} + +// +// Destructor +BLE::~BLE(void) +{ + +} + +// +// begin +bool BLE::begin(const char* localName = "Watchy BLE OTA") { + // Create the BLE Device + BLEDevice::init(localName); + + // Create the BLE Server + pServer = BLEDevice::createServer(); + pServer->setCallbacks(new BLECustomServerCallbacks()); + + // Create the BLE Service + pESPOTAService = pServer->createService(SERVICE_UUID_ESPOTA); + pService = pServer->createService(SERVICE_UUID_OTA); + + // Create a BLE Characteristic + pESPOTAIdCharacteristic = pESPOTAService->createCharacteristic( + CHARACTERISTIC_UUID_ID, + BLECharacteristic::PROPERTY_READ + ); + + pVersionCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID_HW_VERSION, + BLECharacteristic::PROPERTY_READ + ); + + pWatchFaceNameCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID_WATCHFACE_NAME, + BLECharacteristic::PROPERTY_READ + ); + + pOtaCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID_FW, + BLECharacteristic::PROPERTY_NOTIFY | BLECharacteristic::PROPERTY_WRITE + ); + + pOtaCharacteristic->addDescriptor(new BLE2902()); + pOtaCharacteristic->setCallbacks(new otaCallback(this)); + + // Start the service(s) + pESPOTAService->start(); + pService->start(); + + // Start advertising + pServer->getAdvertising()->addServiceUUID(SERVICE_UUID_ESPOTA); + pServer->getAdvertising()->start(); + + uint8_t hardwareVersion[5] = {HARDWARE_VERSION_MAJOR, HARDWARE_VERSION_MINOR, SOFTWARE_VERSION_MAJOR, SOFTWARE_VERSION_MINOR, SOFTWARE_VERSION_PATCH}; + pVersionCharacteristic->setValue((uint8_t*)hardwareVersion, 5); + pWatchFaceNameCharacteristic->setValue("Watchy 7 Segment"); + + return true; +} + +int BLE::updateStatus(){ + return status; +} + +int BLE::howManyBytes(){ + return bytesReceived; +} \ No newline at end of file diff --git a/src/BLE.h b/src/BLE.h new file mode 100644 index 0000000..e346711 --- /dev/null +++ b/src/BLE.h @@ -0,0 +1,42 @@ +#ifndef _BLE_H_ +#define _BLE_H_ + +#include "Arduino.h" + +#include +#include +#include +#include + +#include "esp_ota_ops.h" + +#include "config.h" + +class BLE; + +class BLE +{ + public: + + BLE(void); + ~BLE(void); + + bool begin(const char* localName); + int updateStatus(); + int howManyBytes(); + + private: + String local_name; + + BLEServer *pServer = NULL; + + BLEService *pESPOTAService = NULL; + BLECharacteristic * pESPOTAIdCharacteristic = NULL; + + BLEService *pService = NULL; + BLECharacteristic * pVersionCharacteristic = NULL; + BLECharacteristic * pOtaCharacteristic = NULL; + BLECharacteristic * pWatchFaceNameCharacteristic = NULL; +}; + +#endif diff --git a/src/DSEG7_Classic_Bold_53.h b/src/DSEG7_Classic_Bold_53.h new file mode 100644 index 0000000..ad43b8c --- /dev/null +++ b/src/DSEG7_Classic_Bold_53.h @@ -0,0 +1,199 @@ +// Created by http://oleddisplay.squix.ch/ Consider a donation +// In case of problems make sure that you are using the font file with the correct version! +const uint8_t DSEG7_Classic_Bold_53Bitmaps[] PROGMEM = { + + // Bitmap Data: + 0x00, // ' ' + 0x00, // '!' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '"' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '#' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '$' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '%' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '&' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // ''' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '(' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // ')' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '*' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '+' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // ',' + 0x1F,0xFF,0xFC,0x0F,0xFF,0xFF,0x87,0xFF,0xFF,0xF3,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0x0F,0xFF,0xFF,0x81,0xFF,0xFF,0xC0, // '-' + 0x00,0xF3,0xF7,0xEF,0xDF,0x9E,0x00, // '.' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '/' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7E,0xF8,0x00,0x00,0x0F,0xBC,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x1E,0xF8,0x00,0x00,0x0F,0xBF,0x00,0x00,0x07,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xDF,0xFF,0xFD,0xFB,0xEF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xF7,0x9B,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // '0' + 0x00,0x0C,0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x00,0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C,0x00, // '1' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xEC,0x07,0xFF,0xFF,0xF7,0x80,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFD,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x07,0xFF,0xFF,0x7E,0x03,0xFF,0xFF,0xEF,0x81,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0x3F,0x7F,0xFF,0xF0,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xDF,0xFF,0xFC,0x03,0xEF,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0xF0,0x1B,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // '2' + 0x7F,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFE,0xC3,0xFF,0xFF,0xFB,0xC3,0xFF,0xFF,0xEF,0x83,0xFF,0xFF,0xBF,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x07,0xFF,0xFF,0x7E,0x1F,0xFF,0xFF,0x7C,0x7F,0xFF,0xFF,0x79,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFD,0xE1,0xFF,0xFF,0xF7,0xC1,0xFF,0xFF,0xDF,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x83,0xFF,0xFF,0xBF,0x0F,0xFF,0xFF,0xBE,0x3F,0xFF,0xFF,0xBC,0xFF,0xFF,0xFF,0xB3,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFC,0x00, // '3' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFD,0xE0,0x3F,0xFF,0xFE,0xF8,0x07,0xFF,0xFF,0x7E,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // '4' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x3E,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFC,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0x00,0xFB,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x80,0x1F,0xFF,0xFF,0xDE,0x03,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xF7,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x1F,0xFF,0xFD,0xF8,0x0F,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xF7,0x83,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // '5' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x3E,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFC,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0x00,0xFB,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xDE,0xFB,0xFF,0xFF,0xEF,0xBF,0x7F,0xFF,0xF7,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xDF,0xFF,0xFD,0xFB,0xEF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xF7,0x9B,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // '6' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7E,0xF8,0x00,0x00,0x0F,0xBC,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // '7' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xDE,0xFB,0xFF,0xFF,0xEF,0xBF,0x7F,0xFF,0xF7,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xDF,0xFF,0xFD,0xFB,0xEF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xF7,0x9B,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // '8' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x80,0x1F,0xFF,0xFF,0xDE,0x03,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xF7,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x1F,0xFF,0xFD,0xF8,0x0F,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xF7,0x83,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // '9' + 0x38,0x7C,0xFC,0xFE,0xFC,0x7C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xFC,0xFE,0xFE,0xFC,0x7C, // ':' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // ';' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '<' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '=' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '>' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '?' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '@' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xDE,0xFB,0xFF,0xFF,0xEF,0xBF,0x7F,0xFF,0xF7,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFB,0xE0,0x00,0x00,0x3E,0xF0,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'A' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x7F,0xFF,0xF0,0x0F,0xBF,0xFF,0xFE,0x03,0xDF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'B' + 0x01,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'C' + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x7F,0xFF,0xF7,0xE0,0x3F,0xFF,0xFE,0xF8,0x1F,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'D' + 0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x6F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'E' + 0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x6F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 'F' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x3E,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFC,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x1E,0xF8,0x00,0x00,0x0F,0xBF,0x00,0x00,0x07,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xDF,0xFF,0xFD,0xFB,0xEF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xF7,0x9B,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // 'G' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x7F,0xFF,0xF0,0x0F,0xBF,0xFF,0xFE,0x03,0xDF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xBE,0x00,0x00,0x03,0xEF,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // 'H' + 0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C,0x00, // 'I' + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0xFB,0xF0,0x00,0x00,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'J' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x3E,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFC,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0x00,0xFB,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xDE,0xFB,0xFF,0xFF,0xEF,0xBF,0x7F,0xFF,0xF7,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFB,0xE0,0x00,0x00,0x3E,0xF0,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'K' + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'L' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7E,0xF8,0x00,0x00,0x0F,0xBC,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x1E,0xF8,0x00,0x00,0x0F,0xBF,0x00,0x00,0x07,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFB,0xE0,0x00,0x00,0x3E,0xF0,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'M' + 0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0x00,0x3F,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7E,0xF8,0x00,0x00,0x0F,0xBC,0x00,0x00,0x01,0xE6,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00, // 'N' + 0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0x00,0x3F,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE6,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,0x00, // 'O' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0x3F,0x7F,0xFF,0xF0,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 'P' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x80,0x1F,0xFF,0xFF,0xDE,0x03,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xF7,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'Q' + 0x01,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0xF7,0xFF,0xFF,0xF3,0xEF,0xFF,0xFF,0x8F,0xDF,0xFF,0xFC,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x00,0x00,0x00,0xF8,0x00,0x00,0x03,0xC0,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 'R' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x7F,0xFF,0xF0,0x0F,0xBF,0xFF,0xFE,0x03,0xDF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFD,0xE0,0x3F,0xFF,0xFE,0xF8,0x07,0xFF,0xFF,0x7E,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'S' + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'T' + 0xF0,0x00,0x00,0x07,0xBE,0x00,0x00,0x03,0xEF,0xC0,0x00,0x01,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE6,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,0x00, // 'U' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0xFB,0xC0,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0xFB,0xF0,0x00,0x00,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'V' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'W' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xBE,0x00,0x00,0x03,0xEF,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // 'X' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFD,0xE0,0x3F,0xFF,0xFE,0xF8,0x07,0xFF,0xFF,0x7E,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'Y' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xEC,0x07,0xFF,0xFF,0xF7,0x80,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFD,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xDF,0xFF,0xFC,0x03,0xEF,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0xF0,0x1B,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // 'Z' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '[' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '\' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // ']' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '^' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '_' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '`' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xDE,0xFB,0xFF,0xFF,0xEF,0xBF,0x7F,0xFF,0xF7,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFB,0xE0,0x00,0x00,0x3E,0xF0,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'a' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x7F,0xFF,0xF0,0x0F,0xBF,0xFF,0xFE,0x03,0xDF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'b' + 0x01,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'c' + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x7F,0xFF,0xF7,0xE0,0x3F,0xFF,0xFE,0xF8,0x1F,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'd' + 0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x6F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'e' + 0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x6F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 'f' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x3E,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFC,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x1E,0xF8,0x00,0x00,0x0F,0xBF,0x00,0x00,0x07,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xDF,0xFF,0xFD,0xFB,0xEF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xF7,0x9B,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // 'g' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x7F,0xFF,0xF0,0x0F,0xBF,0xFF,0xFE,0x03,0xDF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xBE,0x00,0x00,0x03,0xEF,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // 'h' + 0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C,0x00, // 'i' + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0xFB,0xF0,0x00,0x00,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'j' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x3E,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFC,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0x00,0xFB,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xDE,0xFB,0xFF,0xFF,0xEF,0xBF,0x7F,0xFF,0xF7,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFB,0xE0,0x00,0x00,0x3E,0xF0,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'k' + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 'l' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7E,0xF8,0x00,0x00,0x0F,0xBC,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x1E,0xF8,0x00,0x00,0x0F,0xBF,0x00,0x00,0x07,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFB,0xE0,0x00,0x00,0x3E,0xF0,0x00,0x00,0x07,0x98,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'm' + 0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0x00,0x3F,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7E,0xF8,0x00,0x00,0x0F,0xBC,0x00,0x00,0x01,0xE6,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00, // 'n' + 0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0x00,0x3F,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE6,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,0x00, // 'o' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x83,0xDF,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0x3F,0x7F,0xFF,0xF0,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 'p' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC1,0xBF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xF7,0xBE,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFD,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0x80,0x1F,0xFF,0xFF,0xDE,0x03,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xF7,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00, // 'q' + 0x01,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0xF7,0xFF,0xFF,0xF3,0xEF,0xFF,0xFF,0x8F,0xDF,0xFF,0xFC,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x80,0x00,0x00,0xFE,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x3F,0x00,0x00,0x00,0xF8,0x00,0x00,0x03,0xC0,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 'r' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x7F,0xFF,0xF0,0x0F,0xBF,0xFF,0xFE,0x03,0xDF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFD,0xE0,0x3F,0xFF,0xFE,0xF8,0x07,0xFF,0xFF,0x7E,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 's' + 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0xF7,0xFF,0xFF,0xF0,0xFB,0xFF,0xFF,0xE0,0xFD,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFD,0xFF,0xFF,0xC0,0xFB,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xF0,0x6F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xF8, // 't' + 0xF0,0x00,0x00,0x07,0xBE,0x00,0x00,0x03,0xEF,0xC0,0x00,0x01,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFD,0xE6,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,0x00, // 'u' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0xFB,0xC0,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0xFB,0xF0,0x00,0x00,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'v' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFD,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFB,0xEF,0x7F,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'w' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x3D,0xFF,0xFF,0xFD,0xEF,0xBF,0xFF,0xFE,0xFB,0xF7,0xFF,0xFF,0x7E,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xBE,0x00,0x00,0x03,0xEF,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // 'x' + 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xCF,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x3E,0xFC,0x00,0x00,0x1F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x80,0x00,0x0F,0xEF,0xE0,0x00,0x03,0xFB,0xF8,0x00,0x00,0xFE,0xFE,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xF7,0xEF,0xBF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFD,0xE0,0x3F,0xFF,0xFE,0xF8,0x07,0xFF,0xFF,0x7E,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x80, // 'y' + 0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xEC,0x07,0xFF,0xFF,0xF7,0x80,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFD,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xDF,0xFF,0xFC,0x03,0xEF,0xFF,0xFF,0x80,0xF7,0xFF,0xFF,0xF0,0x1B,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF8,0x00, // 'z' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '{' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0, // '|' + 0xFF,0xFD,0xFF,0xFB,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0x00,0x36,0x00,0x6C,0x00,0xD8,0x01,0xB0,0x03,0x60,0x06,0xC0,0x0D,0x80,0x1B,0xFF,0xF7,0xFF,0xE0 // '}' +}; +const GFXglyph DSEG7_Classic_Bold_53Glyphs[] PROGMEM = { +// bitmapOffset, width, height, xAdvance, xOffset, yOffset + { 0, 1, 1, 12, 0, 0 }, // ' ' + { 1, 1, 1, 44, 0, 0 }, // '!' + { 2, 15, 36, 20, 2, -36 }, // '"' + { 70, 15, 36, 20, 2, -36 }, // '#' + { 138, 15, 36, 20, 2, -36 }, // '$' + { 206, 15, 36, 20, 2, -36 }, // '%' + { 274, 15, 36, 20, 2, -36 }, // '&' + { 342, 15, 36, 20, 2, -36 }, // ''' + { 410, 15, 36, 20, 2, -36 }, // '(' + { 478, 15, 36, 20, 2, -36 }, // ')' + { 546, 15, 36, 20, 2, -36 }, // '*' + { 614, 15, 36, 20, 2, -36 }, // '+' + { 682, 15, 36, 20, 2, -36 }, // ',' + { 750, 26, 7, 44, 9, -30 }, // '-' + { 773, 7, 7, 1, -3, -7 }, // '.' + { 780, 15, 36, 20, 2, -36 }, // '/' + { 848, 34, 53, 44, 5, -53 }, // '0' + { 1074, 8, 49, 44, 31, -51 }, // '1' + { 1123, 34, 53, 44, 5, -53 }, // '2' + { 1349, 31, 53, 44, 8, -53 }, // '3' + { 1555, 34, 49, 44, 5, -51 }, // '4' + { 1764, 34, 53, 44, 5, -53 }, // '5' + { 1990, 34, 53, 44, 5, -53 }, // '6' + { 2216, 34, 51, 44, 5, -53 }, // '7' + { 2433, 34, 53, 44, 5, -53 }, // '8' + { 2659, 34, 53, 44, 5, -53 }, // '9' + { 2885, 8, 28, 12, 2, -40 }, // ':' + { 2913, 15, 36, 20, 2, -36 }, // ';' + { 2981, 15, 36, 20, 2, -36 }, // '<' + { 3049, 15, 36, 20, 2, -36 }, // '=' + { 3117, 15, 36, 20, 2, -36 }, // '>' + { 3185, 15, 36, 20, 2, -36 }, // '?' + { 3253, 15, 36, 20, 2, -36 }, // '@' + { 3321, 34, 51, 44, 5, -53 }, // 'A' + { 3538, 34, 51, 44, 5, -51 }, // 'B' + { 3755, 32, 30, 44, 5, -30 }, // 'C' + { 3875, 34, 51, 44, 5, -51 }, // 'D' + { 4092, 32, 53, 44, 5, -53 }, // 'E' + { 4304, 32, 51, 44, 5, -53 }, // 'F' + { 4508, 34, 53, 44, 5, -53 }, // 'G' + { 4734, 34, 49, 44, 5, -51 }, // 'H' + { 4943, 8, 24, 44, 31, -26 }, // 'I' + { 4967, 34, 51, 44, 5, -51 }, // 'J' + { 5184, 34, 51, 44, 5, -53 }, // 'K' + { 5401, 32, 51, 44, 5, -51 }, // 'L' + { 5605, 34, 51, 44, 5, -53 }, // 'M' + { 5822, 34, 28, 44, 5, -30 }, // 'N' + { 5941, 34, 30, 44, 5, -30 }, // 'O' + { 6069, 34, 51, 44, 5, -53 }, // 'P' + { 6286, 34, 51, 44, 5, -53 }, // 'Q' + { 6503, 30, 28, 44, 5, -30 }, // 'R' + { 6608, 34, 51, 44, 5, -51 }, // 'S' + { 6825, 32, 51, 44, 5, -51 }, // 'T' + { 7029, 34, 26, 44, 5, -26 }, // 'U' + { 7140, 34, 51, 44, 5, -51 }, // 'V' + { 7357, 34, 51, 44, 5, -51 }, // 'W' + { 7574, 34, 49, 44, 5, -51 }, // 'X' + { 7783, 34, 51, 44, 5, -51 }, // 'Y' + { 8000, 34, 53, 44, 5, -53 }, // 'Z' + { 8226, 15, 36, 20, 2, -36 }, // '[' + { 8294, 15, 36, 20, 2, -36 }, // '\' + { 8362, 15, 36, 20, 2, -36 }, // ']' + { 8430, 15, 36, 20, 2, -36 }, // '^' + { 8498, 15, 36, 20, 2, -36 }, // '_' + { 8566, 15, 36, 20, 2, -36 }, // '`' + { 8634, 34, 51, 44, 5, -53 }, // 'a' + { 8851, 34, 51, 44, 5, -51 }, // 'b' + { 9068, 32, 30, 44, 5, -30 }, // 'c' + { 9188, 34, 51, 44, 5, -51 }, // 'd' + { 9405, 32, 53, 44, 5, -53 }, // 'e' + { 9617, 32, 51, 44, 5, -53 }, // 'f' + { 9821, 34, 53, 44, 5, -53 }, // 'g' + { 10047, 34, 49, 44, 5, -51 }, // 'h' + { 10256, 8, 24, 44, 31, -26 }, // 'i' + { 10280, 34, 51, 44, 5, -51 }, // 'j' + { 10497, 34, 51, 44, 5, -53 }, // 'k' + { 10714, 32, 51, 44, 5, -51 }, // 'l' + { 10918, 34, 51, 44, 5, -53 }, // 'm' + { 11135, 34, 28, 44, 5, -30 }, // 'n' + { 11254, 34, 30, 44, 5, -30 }, // 'o' + { 11382, 34, 51, 44, 5, -53 }, // 'p' + { 11599, 34, 51, 44, 5, -53 }, // 'q' + { 11816, 30, 28, 44, 5, -30 }, // 'r' + { 11921, 34, 51, 44, 5, -51 }, // 's' + { 12138, 32, 51, 44, 5, -51 }, // 't' + { 12342, 34, 26, 44, 5, -26 }, // 'u' + { 12453, 34, 51, 44, 5, -51 }, // 'v' + { 12670, 34, 51, 44, 5, -51 }, // 'w' + { 12887, 34, 49, 44, 5, -51 }, // 'x' + { 13096, 34, 51, 44, 5, -51 }, // 'y' + { 13313, 34, 53, 44, 5, -53 }, // 'z' + { 13539, 15, 36, 20, 2, -36 }, // '{' + { 13607, 15, 36, 20, 2, -36 }, // '|' + { 13675, 15, 36, 20, 2, -36 } // '}' +}; +const GFXfont DSEG7_Classic_Bold_53 PROGMEM = { +(uint8_t *)DSEG7_Classic_Bold_53Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_53Glyphs,0x20, 0x7E, 58}; \ No newline at end of file diff --git a/src/Watchy.cpp b/src/Watchy.cpp new file mode 100644 index 0000000..bdf4e18 --- /dev/null +++ b/src/Watchy.cpp @@ -0,0 +1,806 @@ +#include "Watchy.h" + +DS3232RTC Watchy::RTC(false); +GxEPD2_BW Watchy::display(GxEPD2_154_D67(CS, DC, RESET, BUSY)); + +RTC_DATA_ATTR int guiState; +RTC_DATA_ATTR int menuIndex; +RTC_DATA_ATTR BMA423 sensor; +RTC_DATA_ATTR bool WIFI_CONFIGURED; +RTC_DATA_ATTR bool BLE_CONFIGURED; + +Watchy::Watchy(){} //constructor + +void Watchy::init(){ + esp_sleep_wakeup_cause_t wakeup_reason; + wakeup_reason = esp_sleep_get_wakeup_cause(); //get wake up reason + Wire.begin(SDA, SCL); //init i2c + + switch (wakeup_reason) + { + case ESP_SLEEP_WAKEUP_EXT0: //RTC Alarm + RTC.alarm(ALARM_2); //resets the alarm flag in the RTC + if(guiState == WATCHFACE_STATE){ + RTC.read(currentTime); + showWatchFace(true); //partial updates on tick + }else{ + // + } + break; + case ESP_SLEEP_WAKEUP_EXT1: //button Press + handleButtonPress(); + break; + default: //reset + _rtcConfig(); + _bmaConfig(); + showWatchFace(false); //full update on reset + break; + } + deepSleep(); +} + +void Watchy::deepSleep(){ + esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt + esp_sleep_enable_ext1_wakeup(BTN_PIN_MASK, ESP_EXT1_WAKEUP_ANY_HIGH); //enable deep sleep wake on button press + esp_deep_sleep_start(); +} + +void Watchy::_rtcConfig(){ + //https://github.com/JChristensen/DS3232RTC + RTC.squareWave(SQWAVE_NONE); //disable square wave output + //RTC.set(compileTime()); //set RTC time to compile time + RTC.setAlarm(ALM2_EVERY_MINUTE, 0, 0, 0, 0); //alarm wakes up Watchy every minute + RTC.alarmInterrupt(ALARM_2, true); //enable alarm interrupt + RTC.read(currentTime); +} + +void Watchy::handleButtonPress(){ + uint64_t wakeupBit = esp_sleep_get_ext1_wakeup_status(); + //Menu Button + if (wakeupBit & MENU_BTN_MASK){ + if(guiState == WATCHFACE_STATE){//enter menu state if coming from watch face + showMenu(menuIndex, false); + }else if(guiState == MAIN_MENU_STATE){//if already in menu, then select menu item + switch(menuIndex) + { + case 0: + showBattery(); + break; + case 1: + showBuzz(); + break; + case 2: + showAccelerometer(); + break; + case 3: + setTime(); + break; + case 4: + setupWifi(); + break; + case 5: + showUpdateFW(); + break; + default: + break; + } + }else if(guiState == FW_UPDATE_STATE){ + updateFWBegin(); + } + } + //Back Button + else if (wakeupBit & BACK_BTN_MASK){ + if(guiState == MAIN_MENU_STATE){//exit to watch face if already in menu + RTC.alarm(ALARM_2); //resets the alarm flag in the RTC + RTC.read(currentTime); + showWatchFace(false); + }else if(guiState == APP_STATE){ + showMenu(menuIndex, false);//exit to menu if already in app + }else if(guiState == FW_UPDATE_STATE){ + showMenu(menuIndex, false);//exit to menu if already in app + } + } + //Up Button + else if (wakeupBit & UP_BTN_MASK){ + if(guiState == MAIN_MENU_STATE){//increment menu index + menuIndex--; + if(menuIndex < 0){ + menuIndex = MENU_LENGTH - 1; + } + showMenu(menuIndex, true); + } + } + //Down Button + else if (wakeupBit & DOWN_BTN_MASK){ + if(guiState == MAIN_MENU_STATE){//decrement menu index + menuIndex++; + if(menuIndex > MENU_LENGTH - 1){ + menuIndex = 0; + } + showMenu(menuIndex, true); + } + } +} + +void Watchy::showMenu(byte menuIndex, bool partialRefresh){ + display.init(0, false); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + + int16_t x1, y1; + uint16_t w, h; + int16_t yPos; + + char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware"}; + for(int i=0; i SET_DAY){ + break; + } + } + if(digitalRead(BACK_BTN_PIN) == 1){ + if(setIndex != SET_HOUR){ + setIndex--; + } + } + + blink = 1 - blink; + + if(digitalRead(DOWN_BTN_PIN) == 1){ + blink = 1; + switch(setIndex){ + case SET_HOUR: + hour == 23 ? (hour = 0) : hour++; + break; + case SET_MINUTE: + minute == 59 ? (minute = 0) : minute++; + break; + case SET_YEAR: + year == 99 ? (year = 20) : year++; + break; + case SET_MONTH: + month == 12 ? (month = 1) : month++; + break; + case SET_DAY: + day == 31 ? (day = 1) : day++; + break; + default: + break; + } + } + + if(digitalRead(UP_BTN_PIN) == 1){ + blink = 1; + switch(setIndex){ + case SET_HOUR: + hour == 0 ? (hour = 23) : hour--; + break; + case SET_MINUTE: + minute == 0 ? (minute = 59) : minute--; + break; + case SET_YEAR: + year == 20 ? (year = 99) : year--; + break; + case SET_MONTH: + month == 1 ? (month = 12) : month--; + break; + case SET_DAY: + day == 1 ? (day = 31) : day--; + break; + default: + break; + } + } + + display.fillScreen(GxEPD_BLACK); + display.setTextColor(GxEPD_WHITE); + display.setFont(&DSEG7_Classic_Bold_53); + + display.setCursor(5, 80); + if(setIndex == SET_HOUR){//blink hour digits + display.setTextColor(blink ? GxEPD_WHITE : GxEPD_BLACK); + } + if(hour < 10){ + display.print("0"); + } + display.print(hour); + + display.setTextColor(GxEPD_WHITE); + display.print(":"); + + display.setCursor(108, 80); + if(setIndex == SET_MINUTE){//blink minute digits + display.setTextColor(blink ? GxEPD_WHITE : GxEPD_BLACK); + } + if(minute < 10){ + display.print("0"); + } + display.print(minute); + + display.setTextColor(GxEPD_WHITE); + + display.setFont(&FreeMonoBold9pt7b); + display.setCursor(45, 150); + if(setIndex == SET_YEAR){//blink minute digits + display.setTextColor(blink ? GxEPD_WHITE : GxEPD_BLACK); + } + display.print(2000+year); + + display.setTextColor(GxEPD_WHITE); + display.print("/"); + + if(setIndex == SET_MONTH){//blink minute digits + display.setTextColor(blink ? GxEPD_WHITE : GxEPD_BLACK); + } + if(month < 10){ + display.print("0"); + } + display.print(month); + + display.setTextColor(GxEPD_WHITE); + display.print("/"); + + if(setIndex == SET_DAY){//blink minute digits + display.setTextColor(blink ? GxEPD_WHITE : GxEPD_BLACK); + } + if(day < 10){ + display.print("0"); + } + display.print(day); + display.display(true); //partial refresh + } + + display.hibernate(); + + const time_t FUDGE(10);//fudge factor to allow for upload time, etc. (seconds, YMMV) + tmElements_t tm; + tm.Month = month; + tm.Day = day; + tm.Year = year + 2000 - YEAR_OFFSET;//offset from 1970, since year is stored in uint8_t + tm.Hour = hour; + tm.Minute = minute; + tm.Second = 0; + + time_t t = makeTime(tm) + FUDGE; + RTC.set(t); + + showMenu(menuIndex, false); + +} + +void Watchy::showAccelerometer(){ + display.init(0, true); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + + Accel acc; + + long previousMillis = 0; + long interval = 200; + + guiState = APP_STATE; + + pinMode(BACK_BTN_PIN, INPUT); + + while(1){ + + unsigned long currentMillis = millis(); + + if(digitalRead(BACK_BTN_PIN) == 1){ + break; + } + + if(currentMillis - previousMillis > interval){ + previousMillis = currentMillis; + // Get acceleration data + bool res = sensor.getAccel(acc); + uint8_t direction = sensor.getDirection(); + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setCursor(0, 30); + if(res == false) { + display.println("getAccel FAIL"); + }else{ + display.print(" X:"); display.println(acc.x); + display.print(" Y:"); display.println(acc.y); + display.print(" Z:"); display.println(acc.z); + + display.setCursor(30, 130); + switch(direction){ + case DIRECTION_DISP_DOWN: + display.println("FACE DOWN"); + break; + case DIRECTION_DISP_UP: + display.println("FACE UP"); + break; + case DIRECTION_BOTTOM_EDGE: + display.println("BOTTOM EDGE"); + break; + case DIRECTION_TOP_EDGE: + display.println("TOP EDGE"); + break; + case DIRECTION_RIGHT_EDGE: + display.println("RIGHT EDGE"); + break; + case DIRECTION_LEFT_EDGE: + display.println("LEFT EDGE"); + break; + default: + display.println("ERROR!!!"); + break; + } + + } + display.display(true); //full refresh + } + } + + showMenu(menuIndex, false); +} + +void Watchy::showWatchFace(bool partialRefresh){ + display.init(0, false); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + drawWatchFace(); + display.display(partialRefresh); //partial refresh + display.hibernate(); + guiState = WATCHFACE_STATE; +} + +void Watchy::drawWatchFace(){ + display.setFont(&DSEG7_Classic_Bold_53); + display.setCursor(5, 53+60); + if(currentTime.Hour < 10){ + display.print("0"); + } + display.print(currentTime.Hour); + display.print(":"); + if(currentTime.Minute < 10){ + display.print("0"); + } + display.println(currentTime.Minute); +} + +weatherData Watchy::getWeatherData(){ + + weatherData currentWeather; + + if(connectWiFi()){//Use Weather API for live data if WiFi is connected + HTTPClient http; + http.setConnectTimeout(3000);//3 second max timeout + String weatherQueryURL = String(OPENWEATHERMAP_URL) + String(CITY_NAME) + String(",") + String(COUNTRY_CODE) + String("&units=") + String(TEMP_UNIT) + String("&appid=") + String(OPENWEATHERMAP_APIKEY); + http.begin(weatherQueryURL.c_str()); + int httpResponseCode = http.GET(); + if(httpResponseCode == 200) { + String payload = http.getString(); + JSONVar responseObject = JSON.parse(payload); + currentWeather.temperature = int(responseObject["main"]["temp"]); + currentWeather.weatherConditionCode = int(responseObject["weather"][0]["id"]); + }else{ + //http error + } + http.end(); + //turn off radios + WiFi.mode(WIFI_OFF); + btStop(); + }else{//No WiFi, use RTC Temperature + uint8_t temperature = RTC.temperature() / 4; //celsius + if(TEMP_UNIT == "imperial"){ + temperature = temperature * 9. / 5. + 32.; //fahrenheit + } + currentWeather.temperature = temperature; + currentWeather.weatherConditionCode = 800; + } + return currentWeather; +} + +float Watchy::getBatteryVoltage(){ + return analogRead(ADC_PIN) / 4096.0 * 7.23; +} + +uint16_t Watchy::_readRegister(uint8_t address, uint8_t reg, uint8_t *data, uint16_t len) +{ + Wire.beginTransmission(address); + Wire.write(reg); + Wire.endTransmission(); + Wire.requestFrom((uint8_t)address, (uint8_t)len); + uint8_t i = 0; + while (Wire.available()) { + data[i++] = Wire.read(); + } + return 0; +} + +uint16_t Watchy::_writeRegister(uint8_t address, uint8_t reg, uint8_t *data, uint16_t len) +{ + Wire.beginTransmission(address); + Wire.write(reg); + Wire.write(data, len); + return (0 != Wire.endTransmission()); +} + +void Watchy::_bmaConfig(){ + + if (sensor.begin(_readRegister, _writeRegister, delay) == false) { + //fail to init BMA + return; + } + + // Accel parameter structure + Acfg cfg; + /*! + Output data rate in Hz, Optional parameters: + - BMA4_OUTPUT_DATA_RATE_0_78HZ + - BMA4_OUTPUT_DATA_RATE_1_56HZ + - BMA4_OUTPUT_DATA_RATE_3_12HZ + - BMA4_OUTPUT_DATA_RATE_6_25HZ + - BMA4_OUTPUT_DATA_RATE_12_5HZ + - BMA4_OUTPUT_DATA_RATE_25HZ + - BMA4_OUTPUT_DATA_RATE_50HZ + - BMA4_OUTPUT_DATA_RATE_100HZ + - BMA4_OUTPUT_DATA_RATE_200HZ + - BMA4_OUTPUT_DATA_RATE_400HZ + - BMA4_OUTPUT_DATA_RATE_800HZ + - BMA4_OUTPUT_DATA_RATE_1600HZ + */ + cfg.odr = BMA4_OUTPUT_DATA_RATE_100HZ; + /*! + G-range, Optional parameters: + - BMA4_ACCEL_RANGE_2G + - BMA4_ACCEL_RANGE_4G + - BMA4_ACCEL_RANGE_8G + - BMA4_ACCEL_RANGE_16G + */ + cfg.range = BMA4_ACCEL_RANGE_2G; + /*! + Bandwidth parameter, determines filter configuration, Optional parameters: + - BMA4_ACCEL_OSR4_AVG1 + - BMA4_ACCEL_OSR2_AVG2 + - BMA4_ACCEL_NORMAL_AVG4 + - BMA4_ACCEL_CIC_AVG8 + - BMA4_ACCEL_RES_AVG16 + - BMA4_ACCEL_RES_AVG32 + - BMA4_ACCEL_RES_AVG64 + - BMA4_ACCEL_RES_AVG128 + */ + cfg.bandwidth = BMA4_ACCEL_NORMAL_AVG4; + + /*! Filter performance mode , Optional parameters: + - BMA4_CIC_AVG_MODE + - BMA4_CONTINUOUS_MODE + */ + cfg.perf_mode = BMA4_CONTINUOUS_MODE; + + // Configure the BMA423 accelerometer + sensor.setAccelConfig(cfg); + + // Enable BMA423 accelerometer + // Warning : Need to use feature, you must first enable the accelerometer + // Warning : Need to use feature, you must first enable the accelerometer + sensor.enableAccel(); + + struct bma4_int_pin_config config ; + config.edge_ctrl = BMA4_LEVEL_TRIGGER; + config.lvl = BMA4_ACTIVE_HIGH; + config.od = BMA4_PUSH_PULL; + config.output_en = BMA4_OUTPUT_ENABLE; + config.input_en = BMA4_INPUT_DISABLE; + // The correct trigger interrupt needs to be configured as needed + sensor.setINTPinConfig(config, BMA4_INTR1_MAP); + + struct bma423_axes_remap remap_data; + remap_data.x_axis = 1; + remap_data.x_axis_sign = 0; + remap_data.y_axis = 0; + remap_data.y_axis_sign = 0; + remap_data.z_axis = 2; + remap_data.z_axis_sign = 0; + // Need to raise the wrist function, need to set the correct axis + sensor.setRemapAxes(&remap_data); + + // Enable BMA423 isStepCounter feature + sensor.enableFeature(BMA423_STEP_CNTR, true); + // Enable BMA423 isTilt feature + sensor.enableFeature(BMA423_TILT, true); + // Enable BMA423 isDoubleClick feature + sensor.enableFeature(BMA423_WAKEUP, true); + + // Reset steps + sensor.resetStepCounter(); + + // Turn on feature interrupt + sensor.enableStepCountInterrupt(); + sensor.enableTiltInterrupt(); + // It corresponds to isDoubleClick interrupt + sensor.enableWakeupInterrupt(); +} + +void Watchy::setupWifi(){ + WiFiManager wifiManager; + wifiManager.resetSettings(); + wifiManager.setTimeout(WIFI_AP_TIMEOUT); + wifiManager.setAPCallback(_configModeCallback); + if(!wifiManager.autoConnect(WIFI_AP_SSID)) {//WiFi setup failed + display.init(0, false); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Setup failed &"); + display.println("timed out!"); + display.display(false); //full refresh + display.hibernate(); + }else{ + display.init(0, false);//_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.println("Connected to"); + display.println(WiFi.SSID()); + display.display(false);//full refresh + display.hibernate(); + } + //turn off radios + WiFi.mode(WIFI_OFF); + btStop(); + + guiState = APP_STATE; +} + +void Watchy::_configModeCallback (WiFiManager *myWiFiManager) { + display.init(0, false); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Connect to"); + display.print("SSID: "); + display.println(WIFI_AP_SSID); + display.print("IP: "); + display.println(WiFi.softAPIP()); + display.display(false); //full refresh + display.hibernate(); +} + +bool Watchy::connectWiFi(){ + if(WL_CONNECT_FAILED == WiFi.begin()){//WiFi not setup, you can also use hard coded credentials with WiFi.begin(SSID,PASS); + WIFI_CONFIGURED = false; + }else{ + if(WL_CONNECTED == WiFi.waitForConnectResult()){//attempt to connect for 10s + WIFI_CONFIGURED = true; + }else{//connection failed, time out + WIFI_CONFIGURED = false; + //turn off radios + WiFi.mode(WIFI_OFF); + btStop(); + } + } + return WIFI_CONFIGURED; +} + +void Watchy::showUpdateFW(){ + display.init(0, false); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Please Visit"); + display.println("watchy.sqfmi.com"); + display.println("with a Bluetooth"); + display.println("enabled device"); + display.println(" "); + display.println("Press menu button"); + display.println("again when ready"); + display.println(" "); + display.println("Keep USB powered"); + display.display(false); //full refresh + display.hibernate(); + + guiState = FW_UPDATE_STATE; +} + +void Watchy::updateFWBegin(){ + display.init(0, false); //_initial_refresh to false to prevent full update on init + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Bluetooth Started"); + display.println(" "); + display.println("Watchy BLE OTA"); + display.println(" "); + display.println("Waiting for"); + display.println("connection..."); + display.display(false); //full refresh + + BLE BT; + BT.begin("Watchy BLE OTA"); + int prevStatus = -1; + int currentStatus; + + while(1){ + currentStatus = BT.updateStatus(); + if(prevStatus != currentStatus || prevStatus == 1){ + if(currentStatus == 0){ + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("BLE Connected!"); + display.println(" "); + display.println("Waiting for"); + display.println("upload..."); + display.display(false); //full refresh + } + if(currentStatus == 1){ + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Downloading"); + display.println("firmware:"); + display.println(" "); + display.print(BT.howManyBytes()); + display.println(" bytes"); + display.display(true); //partial refresh + } + if(currentStatus == 2){ + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Download"); + display.println("completed!"); + display.println(" "); + display.println("Rebooting..."); + display.display(false); //full refresh + + delay(2000); + esp_restart(); + } + if(currentStatus == 4){ + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("BLE Disconnected!"); + display.println(" "); + display.println("exiting..."); + display.display(false); //full refresh + delay(1000); + break; + } + prevStatus = currentStatus; + } + delay(100); + } + + //turn off radios + WiFi.mode(WIFI_OFF); + btStop(); + showMenu(menuIndex, false); +} + +// time_t compileTime() +// { +// const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) +// const char *compDate = __DATE__, *compTime = __TIME__, *months = "JanFebMarAprMayJunJulAugSepOctNovDec"; +// char compMon[3], *m; + +// strncpy(compMon, compDate, 3); +// compMon[3] = '\0'; +// m = strstr(months, compMon); + +// tmElements_t tm; +// tm.Month = ((m - months) / 3 + 1); +// tm.Day = atoi(compDate + 4); +// tm.Year = atoi(compDate + 7) - YEAR_OFFSET; // offset from 1970, since year is stored in uint8_t +// tm.Hour = atoi(compTime); +// tm.Minute = atoi(compTime + 3); +// tm.Second = atoi(compTime + 6); + +// time_t t = makeTime(tm); +// return t + FUDGE; //add fudge factor to allow for compile time +// } \ No newline at end of file diff --git a/src/Watchy.h b/src/Watchy.h new file mode 100644 index 0000000..652ef86 --- /dev/null +++ b/src/Watchy.h @@ -0,0 +1,63 @@ +#ifndef WATCHY_H +#define WATCHY_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include "DSEG7_Classic_Bold_53.h" +#include "BLE.h" +#include "bma.h" +#include "config.h" + +typedef struct weatherData{ + int8_t temperature; + int16_t weatherConditionCode; +}weatherData; + +class Watchy { + public: + static DS3232RTC RTC; + static GxEPD2_BW display; + tmElements_t currentTime; + public: + Watchy(); + void init(); + void deepSleep(); + float getBatteryVoltage(); + void vibMotor(uint8_t intervalMs = 100, uint8_t length = 20); + + void handleButtonPress(); + void showMenu(byte menuIndex, bool partialRefresh); + void showBattery(); + void showBuzz(); + void showAccelerometer(); + void showUpdateFW(); + void setTime(); + void setupWifi(); + bool connectWiFi(); + weatherData getWeatherData(); + void updateFWBegin(); + + void showWatchFace(bool partialRefresh); + virtual void drawWatchFace(); //override this method for different watch faces + + private: + void _rtcConfig(); + void _bmaConfig(); + static void _configModeCallback(WiFiManager *myWiFiManager); + static uint16_t _readRegister(uint8_t address, uint8_t reg, uint8_t *data, uint16_t len); + static uint16_t _writeRegister(uint8_t address, uint8_t reg, uint8_t *data, uint16_t len); +}; + +extern RTC_DATA_ATTR int guiState; +extern RTC_DATA_ATTR int menuIndex; +extern RTC_DATA_ATTR BMA423 sensor; +extern RTC_DATA_ATTR bool WIFI_CONFIGURED; +extern RTC_DATA_ATTR bool BLE_CONFIGURED; + +#endif \ No newline at end of file diff --git a/src/bma.cpp b/src/bma.cpp index 23c1e19..fe0e6d1 100644 --- a/src/bma.cpp +++ b/src/bma.cpp @@ -1,77 +1,128 @@ #include "bma.h" -#include -I2CBus *BMA::_bus = nullptr; +#define DEBUGPORT Serial +#ifdef DEBUGPORT +#define DEBUG(...) DEBUGPORT.printf(__VA_ARGS__) +#else +#define DEBUG(...) +#endif -BMA::BMA(I2CBus &bus) +BMA423::BMA423() { - _bus = &bus; + __readRegisterFptr = nullptr; + __writeRegisterFptr = nullptr; + __delayCallBlackFptr = nullptr; + __init = false; } -BMA::~BMA() +BMA423::~BMA423() { } -uint16_t BMA::read(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) +bool BMA423::begin(bma4_com_fptr_t readCallBlack, + bma4_com_fptr_t writeCallBlack, + bma4_delay_fptr_t delayCallBlack, + uint8_t address) { - return _bus->readBytes(addr, reg, data, len); -} -uint16_t BMA::write(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) -{ - return _bus->writeBytes(addr, reg, data, len); -} + if (__init || + readCallBlack == nullptr || + writeCallBlack == nullptr || + delayCallBlack == nullptr) { + return true; + } -bool BMA::begin() -{ - _dev.dev_addr = BMA4_I2C_ADDR_PRIMARY; - _dev.interface = BMA4_I2C_INTERFACE; - _dev.bus_read = read; - _dev.bus_write = write; - _dev.delay = delay; - _dev.read_write_len = 8; - _dev.resolution = 12; - _dev.feature_len = BMA423_FEATURE_SIZE; + __readRegisterFptr = readCallBlack; + __writeRegisterFptr = writeCallBlack; + __delayCallBlackFptr = delayCallBlack; - reset(); + __devFptr.dev_addr = address; + __devFptr.interface = BMA4_I2C_INTERFACE; + __devFptr.bus_read = readCallBlack; + __devFptr.bus_write = writeCallBlack; + __devFptr.delay = delayCallBlack; + __devFptr.read_write_len = 8; + __devFptr.resolution = 12; + __devFptr.feature_len = BMA423_FEATURE_SIZE; - delay(20); + softReset(); - if (bma423_init(&_dev) != BMA4_OK) { - Serial.println("bma4 init fail"); + __delayCallBlackFptr(20); + + if (bma423_init(&__devFptr) != BMA4_OK) { + DEBUG("BMA423 FAIL\n"); return false; } - config(); + if (bma423_write_config_file(&__devFptr) != BMA4_OK) { + DEBUG("BMA423 Write Config FAIL\n"); + return false; + } - return true; -} + __init = true; -void BMA::reset() -{ - uint8_t reg = 0xB6; - _bus->writeBytes(BMA4_I2C_ADDR_PRIMARY, 0x7E, ®, 1); -} + struct bma4_int_pin_config config ; + config.edge_ctrl = BMA4_LEVEL_TRIGGER; + config.lvl = BMA4_ACTIVE_HIGH; + config.od = BMA4_PUSH_PULL; + config.output_en = BMA4_OUTPUT_ENABLE; + config.input_en = BMA4_INPUT_DISABLE; -uint16_t BMA::config() -{ - return bma423_write_config_file(&_dev); -} -bool BMA::getAccel(Accel &acc) -{ - memset(&acc, 0, sizeof(acc)); - if (bma4_read_accel_xyz(&acc, &_dev) != BMA4_OK) { + if (bma4_set_int_pin_config(&config, BMA4_INTR1_MAP, &__devFptr) != BMA4_OK) { + DEBUG("BMA423 SET INT FAIL\n"); return false; } return true; } -uint8_t BMA::direction() +void BMA423::softReset() +{ + uint8_t reg = BMA4_RESET_ADDR; + __writeRegisterFptr(BMA4_I2C_ADDR_PRIMARY, BMA4_RESET_SET_MASK, ®, 1); +} + +void BMA423::shutDown() +{ + bma4_set_advance_power_save(BMA4_DISABLE, &__devFptr); +} + +void BMA423::wakeUp() +{ + bma4_set_advance_power_save(BMA4_ENABLE, &__devFptr); +} + +uint16_t BMA423::getErrorCode() +{ + struct bma4_err_reg err; + uint16_t rslt = bma4_get_error_status(&err, &__devFptr); + return rslt; +} + +uint16_t BMA423::getStatus() +{ + uint8_t status; + bma4_get_status(&status, &__devFptr); + return status; +} + +uint32_t BMA423::getSensorTime() +{ + uint32_t ms; + bma4_get_sensor_time(&ms, &__devFptr); + return ms; +} + +bool BMA423::selfTest() +{ + return (BMA4_OK == bma4_selftest_config(BMA4_ACCEL_SELFTEST_ENABLE_MSK, &__devFptr)); +} + +uint8_t BMA423::getDirection() { Accel acc; - if (bma4_read_accel_xyz(&acc, &_dev) != BMA4_OK) { + if (bma4_read_accel_xyz(&acc, &__devFptr) != BMA4_OK) { return 0; } uint16_t absX = abs(acc.x); @@ -86,23 +137,23 @@ uint8_t BMA::direction() } } else if ((absY > absX) && (absY > absZ)) { if (acc.y > 0) { - return DIRECTION_BOTTOM_EDGE; + return DIRECTION_RIGHT_EDGE; } else { - return DIRECTION_TOP_EDGE; + return DIRECTION_LEFT_EDGE; } } else { if (acc.x < 0) { - return DIRECTION_RIGHT_EDGE; + return DIRECTION_BOTTOM_EDGE; } else { - return DIRECTION_LEFT_EDGE; + return DIRECTION_TOP_EDGE; } } } -float BMA::temperature() +float BMA423::readTemperature() { int32_t data = 0; - bma4_get_temperature(&data, BMA4_DEG, &_dev); + bma4_get_temperature(&data, BMA4_DEG, &__devFptr); float res = (float)data / (float)BMA4_SCALE_TEMP; /* 0x80 - temp read from the register and 23 is the ambient temp added. * If the temp read from register is 0x80, it means no valid @@ -114,127 +165,157 @@ float BMA::temperature() } -void BMA::enableAccel() +float BMA423::readTemperatureF() { - if (bma4_set_accel_enable(BMA4_ENABLE, &_dev)) { - return; + float temp = readTemperature(); + if (temp != 0) { + temp = temp * 1.8 + 32.0; } - Acfg cfg; - cfg.odr = BMA4_OUTPUT_DATA_RATE_100HZ; - cfg.range = BMA4_ACCEL_RANGE_2G; - cfg.bandwidth = BMA4_ACCEL_NORMAL_AVG4; - cfg.perf_mode = BMA4_CONTINUOUS_MODE; + return (temp); +} - if (bma4_set_accel_config(&cfg, &_dev)) { - Serial.println("[bma4] set accel config fail"); - return; +bool BMA423::getAccel(Accel &acc) +{ + memset(&acc, 0, sizeof(acc)); + if (bma4_read_accel_xyz(&acc, &__devFptr) != BMA4_OK) { + return false; } + return true; } -void BMA::disalbeIrq() +bool BMA423::getAccelEnable() { - bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT /* |BMA423_WAKEUP_INT*/, BMA4_DISABLE, &_dev); + uint8_t en; + bma4_get_accel_enable(&en, &__devFptr); + return (en & BMA4_ACCEL_ENABLE_POS) == BMA4_ACCEL_ENABLE_POS; } -void BMA::enableIrq() +bool BMA423::disableAccel() { - bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT /* |BMA423_WAKEUP_INT*/, BMA4_ENABLE, &_dev); + return enableAccel(false); } -//attachInterrupt bma423 int1 -void BMA::attachInterrupt() +bool BMA423::enableAccel(bool en) { - uint16_t rslt = BMA4_OK; - enableAccel(); - // rslt |= bma423_reset_step_counter(&_dev); - rslt |= bma423_step_detector_enable(BMA4_ENABLE, &_dev); - rslt |= bma423_feature_enable(BMA423_STEP_CNTR, BMA4_ENABLE, &_dev); - rslt |= bma423_feature_enable(BMA423_WAKEUP, BMA4_ENABLE, &_dev); - rslt |= bma423_feature_enable(BMA423_TILT, BMA4_ENABLE, &_dev); - rslt |= bma423_step_counter_set_watermark(100, &_dev); - - // rslt |= bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT | BMA423_WAKEUP_INT, BMA4_ENABLE, &_dev); - - rslt |= bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT, BMA4_ENABLE, &_dev); - rslt |= bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_TILT_INT, BMA4_ENABLE, &_dev); - - bma423_anymotion_enable_axis(BMA423_ALL_AXIS_DIS, &_dev); - - struct bma4_int_pin_config config ; - - config.edge_ctrl = BMA4_LEVEL_TRIGGER; - config.lvl = BMA4_ACTIVE_HIGH; - config.od = BMA4_PUSH_PULL; - config.output_en = BMA4_OUTPUT_ENABLE; - config.input_en = BMA4_INPUT_DISABLE; - rslt |= bma4_set_int_pin_config(&config, BMA4_INTR1_MAP, &_dev); - - // Serial.printf("[bma4] attachInterrupt %s\n", rslt != 0 ? "fail" : "pass"); - - - struct bma423_axes_remap remap_data; - remap_data.x_axis = 0; - remap_data.x_axis_sign = 1; - remap_data.y_axis = 1; - remap_data.y_axis_sign = 1; - remap_data.z_axis = 2; - remap_data.z_axis_sign = 0; - - bma423_set_remap_axes(&remap_data, &_dev); - + return (BMA4_OK == bma4_set_accel_enable(en ? BMA4_ENABLE : BMA4_DISABLE, &__devFptr)); } -bool BMA::readInterrupt() +bool BMA423::setAccelConfig(Acfg &cfg) { - return bma423_read_int_status(&_irqStatus, &_dev) == BMA4_OK; + return (BMA4_OK == bma4_set_accel_config(&cfg, &__devFptr)); } -uint8_t BMA::getIrqStatus() +bool BMA423::getAccelConfig(Acfg &cfg) { - return _irqStatus; + return (BMA4_OK == bma4_get_accel_config(&cfg, &__devFptr)); } -uint32_t BMA::getCounter() +bool BMA423::setRemapAxes(struct bma423_axes_remap *remap_data) +{ + return (BMA4_OK == bma423_set_remap_axes(remap_data, &__devFptr)); +} + +bool BMA423::resetStepCounter() +{ + return BMA4_OK == bma423_reset_step_counter(&__devFptr) ; +} + +uint32_t BMA423::getCounter() { uint32_t stepCount; - if (bma423_step_counter_output(&stepCount, &_dev) == BMA4_OK) { + if (bma423_step_counter_output(&stepCount, &__devFptr) == BMA4_OK) { return stepCount; } return 0; } -bool BMA::isStepCounter() +bool BMA423::setINTPinConfig(struct bma4_int_pin_config config, uint8_t pinMap) { - return (bool)(BMA423_STEP_CNTR_INT & _irqStatus); + return BMA4_OK == bma4_set_int_pin_config(&config, pinMap, &__devFptr); } -bool BMA::isDoubleClick() +bool BMA423::getINT() { - return (bool)(BMA423_WAKEUP_INT & _irqStatus); + return bma423_read_int_status(&__IRQ_MASK, &__devFptr) == BMA4_OK; } - -bool BMA::isTilt() +uint8_t BMA423::getIRQMASK() { - return (bool)(BMA423_TILT_INT & _irqStatus); + return __IRQ_MASK; } - -bool BMA::isActivity() +bool BMA423::disableIRQ(uint16_t int_map) { - return (bool)(BMA423_ACTIVITY_INT & _irqStatus); + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, int_map, BMA4_DISABLE, &__devFptr)); } -bool BMA::isAnyNoMotion() +bool BMA423::enableIRQ(uint16_t int_map) { - return (bool)(BMA423_ANY_NO_MOTION_INT & _irqStatus); + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, int_map, BMA4_ENABLE, &__devFptr)); } +bool BMA423::enableFeature(uint8_t feature, uint8_t enable) +{ + if ((feature & BMA423_STEP_CNTR) == BMA423_STEP_CNTR) { + bma423_step_detector_enable(enable ? BMA4_ENABLE : BMA4_DISABLE, &__devFptr); + } + return (BMA4_OK == bma423_feature_enable(feature, enable, &__devFptr)); +} -const char *BMA::getActivity() +bool BMA423::isStepCounter() +{ + return (bool)(BMA423_STEP_CNTR_INT & __IRQ_MASK); +} + +bool BMA423::isDoubleClick() +{ + return (bool)(BMA423_WAKEUP_INT & __IRQ_MASK); +} + +bool BMA423::isTilt() +{ + return (bool)(BMA423_TILT_INT & __IRQ_MASK); +} + +bool BMA423::isActivity() +{ + return (bool)(BMA423_ACTIVITY_INT & __IRQ_MASK); +} + +bool BMA423::isAnyNoMotion() +{ + return (bool)(BMA423_ANY_NO_MOTION_INT & __IRQ_MASK); +} + +bool BMA423::enableStepCountInterrupt(bool en) +{ + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT, en, &__devFptr)); +} + +bool BMA423::enableTiltInterrupt(bool en) +{ + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_TILT_INT, en, &__devFptr)); +} + +bool BMA423::enableWakeupInterrupt(bool en) +{ + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_WAKEUP_INT, en, &__devFptr)); +} + +bool BMA423::enableAnyNoMotionInterrupt(bool en) +{ + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ANY_NO_MOTION_INT, en, &__devFptr)); +} + +bool BMA423::enableActivityInterrupt(bool en) +{ + return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ACTIVITY_INT, en, &__devFptr)); +} + +const char *BMA423::getActivity() { uint8_t activity; - bma423_activity_output(&activity, &_dev); + bma423_activity_output(&activity, &__devFptr); if (activity & BMA423_USER_STATIONARY) { return "BMA423_USER_STATIONARY"; } else if (activity & BMA423_USER_WALKING) { @@ -245,29 +326,4 @@ const char *BMA::getActivity() return "BMA423_STATE_INVALID"; } return "None"; -} - -bool BMA::enableStepCountInterrupt(bool en) -{ - return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT, en, &_dev)); -} - -bool BMA::enableTiltInterrupt(bool en) -{ - return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_TILT_INT, en, &_dev)); -} - -bool BMA::enableWakeupInterrupt(bool en) -{ - return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_WAKEUP_INT, en, &_dev)); -} - -bool BMA::enableAnyNoMotionInterrupt(bool en) -{ - return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ANY_NO_MOTION_INT, en, &_dev)); -} - -bool BMA::enableActivityInterrupt(bool en) -{ - return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ACTIVITY_INT, en, &_dev)); } \ No newline at end of file diff --git a/src/bma.h b/src/bma.h index 4c07406..8f2f3a7 100644 --- a/src/bma.h +++ b/src/bma.h @@ -1,9 +1,12 @@ - #pragma once -#include "bma423.h" -#include "i2c_bus.h" +#ifdef ARDUINO +#include +#else +#include +#endif +#include "bma423.h" enum { DIRECTION_TOP_EDGE = 0, @@ -13,35 +16,60 @@ enum { DIRECTION_DISP_UP = 4, DIRECTION_DISP_DOWN = 5 } ; -typedef struct bma4_dev Bma; + typedef struct bma4_accel Accel; typedef struct bma4_accel_config Acfg; -class BMA +class BMA423 { -public: - BMA(I2CBus &bus); - ~BMA(); - bool begin(); - void reset(); - uint8_t direction(); - float temperature(); - void enableAccel(); - void disalbeIrq(); - void enableIrq(); - void attachInterrupt(); - uint32_t getCounter(); +public: + BMA423(); + ~BMA423(); + + bool begin(bma4_com_fptr_t readCallBlack, bma4_com_fptr_t writeCallBlack, bma4_delay_fptr_t delayCallBlack, + uint8_t address = BMA4_I2C_ADDR_PRIMARY); + + void softReset(); + void shutDown(); + void wakeUp(); + bool selfTest(); + + uint8_t getDirection(); + + bool setAccelConfig(Acfg &cfg); + bool getAccelConfig(Acfg &cfg); + bool getAccel(Accel &acc); + bool getAccelEnable(); + bool disableAccel(); + bool enableAccel(bool en = true); + + bool setINTPinConfig(struct bma4_int_pin_config config, uint8_t pinMap); + bool getINT(); + uint8_t getIRQMASK(); + bool disableIRQ(uint16_t int_map = BMA423_STEP_CNTR_INT); + bool enableIRQ(uint16_t int_map = BMA423_STEP_CNTR_INT); bool isStepCounter(); bool isDoubleClick(); - bool readInterrupt(); bool isTilt(); bool isActivity(); bool isAnyNoMotion(); - bool getAccel(Accel &acc); - uint8_t getIrqStatus(); - const char * getActivity(); + bool resetStepCounter(); + uint32_t getCounter(); + + float readTemperature(); + float readTemperatureF(); + + uint16_t getErrorCode(); + uint16_t getStatus(); + uint32_t getSensorTime(); + + + const char *getActivity(); + bool setRemapAxes(struct bma423_axes_remap *remap_data); + + bool enableFeature(uint8_t feature, uint8_t enable ); bool enableStepCountInterrupt(bool en = true); bool enableTiltInterrupt(bool en = true); bool enableWakeupInterrupt(bool en = true); @@ -49,15 +77,12 @@ public: bool enableActivityInterrupt(bool en = true); private: - static uint16_t read(uint8_t dev_addr, uint8_t reg_addr, uint8_t *read_data, uint16_t len); - static uint16_t write(uint8_t dev_addr, uint8_t reg_addr, uint8_t *read_data, uint16_t len); + bma4_com_fptr_t __readRegisterFptr; + bma4_com_fptr_t __writeRegisterFptr; + bma4_delay_fptr_t __delayCallBlackFptr; - uint16_t config(); - Bma _dev; - static bma4_com_fptr_t _read; - static bma4_com_fptr_t _write; - static I2CBus *_bus; - bool _irqRead = false; - uint16_t _irqStatus; - -}; \ No newline at end of file + uint8_t __address; + uint16_t __IRQ_MASK; + bool __init; + struct bma4_dev __devFptr; +}; diff --git a/src/bma4.c b/src/bma4.c index ac4e5eb..2b38fa1 100644 --- a/src/bma4.c +++ b/src/bma4.c @@ -2517,7 +2517,7 @@ uint16_t bma4_perform_accel_foc(const int32_t accel_g_value[3], struct bma4_dev uint16_t rslt = 0; struct bma4_accel accel_value[10] = { {0} }; struct accel_offset offset = {0}; - struct offset_delta delta = { {0} }; + struct offset_delta delta = { {0,0},{0,0},{0,0} }; struct bma4_accel_config acc_conf = {0}; uint8_t accel_en = 0; uint8_t adv_pwr_save = 0; @@ -4201,4 +4201,4 @@ static uint16_t bma4_null_pointer_check(const struct bma4_dev *dev) rslt = BMA4_OK; return rslt; -} \ No newline at end of file +} diff --git a/src/bma4.h b/src/bma4.h index 499a3f2..eba44b2 100644 --- a/src/bma4.h +++ b/src/bma4.h @@ -1571,4 +1571,4 @@ uint16_t bma4_aux_write(uint8_t aux_reg_addr, uint8_t *aux_data, uint16_t len, s #endif -/* End of __BMA4_H__ */ \ No newline at end of file +/* End of __BMA4_H__ */ diff --git a/src/bma423.c b/src/bma423.c index cc8035b..3d5d9c6 100644 --- a/src/bma423.c +++ b/src/bma423.c @@ -89,570 +89,570 @@ /**\name Feature configuration file */ const uint8_t bma423_config_file[] = { - 0x80, 0x2e, 0xfc, 0x00, 0x80, 0x2e, 0xfe, 0x00, 0xc8, 0x2e, 0x00, 0x2e, - 0x80, 0x2e, 0xfa, 0x00, 0x80, 0x2e, 0x23, 0xb1, 0x80, 0x2e, 0xfd, 0x00, - 0x80, 0x2e, 0xfb, 0x00, 0x80, 0x2e, 0x5a, 0xb1, 0x50, 0x39, 0x21, 0x2e, - 0xb0, 0xf0, 0x10, 0x30, 0x21, 0x2e, 0x16, 0xf0, 0x80, 0x2e, 0xfc, 0x01, - 0x5d, 0x50, 0x45, 0x52, 0x01, 0x42, 0x3b, 0x80, 0x41, 0x30, 0x01, 0x42, - 0x3c, 0x80, 0x00, 0x2e, 0x01, 0x40, 0x01, 0x42, 0x21, 0x2e, 0xff, 0xaf, - 0xb8, 0x2e, 0xb6, 0xd6, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0xfd, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x24, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x2e, - 0x99, 0x01, 0x20, 0x26, 0x98, 0x2e, 0xf6, 0x00, 0x98, 0x2e, 0xe9, 0x01, - 0x10, 0x30, 0x21, 0x2e, 0x59, 0xf0, 0x98, 0x2e, 0xd8, 0x00, 0x00, 0x2e, - 0x00, 0x2e, 0xd0, 0x2e, 0x98, 0x2e, 0xdd, 0x00, 0x01, 0x2e, 0x56, 0x00, - 0x00, 0xb2, 0x11, 0x2f, 0x00, 0x30, 0x21, 0x2e, 0x56, 0x00, 0x41, 0x50, - 0x98, 0x2e, 0xcc, 0xb0, 0x41, 0x50, 0x98, 0x2e, 0x8f, 0xb4, 0x01, 0x2e, - 0x03, 0xf0, 0x0d, 0xbc, 0x0f, 0xb8, 0x00, 0x90, 0x02, 0x2f, 0x45, 0x50, - 0x21, 0x2e, 0xbc, 0xf0, 0x01, 0x2e, 0x55, 0x00, 0x00, 0xb2, 0x1a, 0x2f, - 0x00, 0x30, 0x21, 0x2e, 0x55, 0x00, 0x43, 0x50, 0x98, 0x2e, 0xcc, 0xb0, - 0x43, 0x50, 0x98, 0x2e, 0xdc, 0xb1, 0x43, 0x50, 0x98, 0x2e, 0x92, 0xb5, - 0x43, 0x50, 0x98, 0x2e, 0x00, 0xb0, 0x01, 0x2e, 0x1c, 0x01, 0x0f, 0xbc, - 0x0f, 0xb8, 0x00, 0x90, 0x45, 0x50, 0x02, 0x2f, 0x21, 0x2e, 0xbc, 0xf0, - 0x02, 0x2d, 0x21, 0x2e, 0xba, 0xf0, 0x98, 0x2e, 0xd8, 0x00, 0xc3, 0x2d, - 0x01, 0x2e, 0x55, 0xf0, 0xc0, 0x2e, 0x21, 0x2e, 0x55, 0xf0, 0x03, 0x2e, - 0x00, 0xf0, 0x45, 0x54, 0x01, 0x2e, 0x59, 0xf0, 0x4a, 0x0e, 0x02, 0x2f, - 0xf1, 0x33, 0x0d, 0x2c, 0x01, 0x08, 0xf2, 0x30, 0x4a, 0x08, 0x79, 0x84, - 0x82, 0xa2, 0x04, 0x2f, 0x02, 0x34, 0x82, 0x0a, 0x47, 0xa2, 0x03, 0x2c, - 0x10, 0x22, 0x45, 0x52, 0x01, 0x0a, 0xc0, 0x2e, 0x21, 0x2e, 0x59, 0xf0, - 0x00, 0x31, 0xc0, 0x2e, 0x21, 0x2e, 0xba, 0xf0, 0xc8, 0x2e, 0xc8, 0x2e, - 0xc8, 0x2e, 0xc8, 0x2e, 0xc8, 0x2e, 0x44, 0x47, 0xaa, 0x00, 0x05, 0x00, - 0x2d, 0x01, 0xd4, 0x7b, 0x3b, 0x01, 0xdb, 0x7a, 0x04, 0x00, 0x3f, 0x7b, - 0xcd, 0x6c, 0xc3, 0x04, 0x85, 0x09, 0xc3, 0x04, 0xec, 0xe6, 0x0c, 0x46, - 0x01, 0x00, 0x27, 0x00, 0x19, 0x00, 0x96, 0x00, 0xa0, 0x00, 0x01, 0x00, - 0x0c, 0x00, 0xf0, 0x3c, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x43, 0x28, 0x88, 0x00, - 0x52, 0x00, 0x4f, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x00, 0x40, 0xaf, 0x00, - 0xff, 0x00, 0xff, 0xb7, 0x00, 0x02, 0x00, 0xb0, 0x05, 0x80, 0xb1, 0xf0, - 0xc0, 0x00, 0x00, 0x01, 0x5e, 0xf0, 0x39, 0xf0, 0x89, 0xf0, 0x00, 0x20, - 0xff, 0x7f, 0x7d, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x7c, 0x00, 0xff, 0xfb, - 0x52, 0xf0, 0x56, 0xf0, 0x33, 0x09, 0x33, 0x07, 0x00, 0x08, 0x90, 0x01, - 0x00, 0xf8, 0x67, 0x00, 0x4c, 0x04, 0xa0, 0x00, 0xe8, 0x03, 0x81, 0x00, - 0x82, 0x00, 0x6a, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0xeb, 0x07, 0xae, 0x07, - 0x72, 0x00, 0x6f, 0x00, 0xa1, 0x01, 0x1e, 0x05, 0x47, 0xfd, 0x73, 0x00, - 0x77, 0x00, 0x79, 0x00, 0x76, 0x00, 0xcc, 0x00, 0x30, 0x50, 0x50, 0x40, - 0x00, 0x18, 0x50, 0x40, 0x56, 0x25, 0x47, 0x25, 0x00, 0x18, 0x2e, 0x00, - 0x41, 0x40, 0xa7, 0x02, 0x09, 0x18, 0xc6, 0x00, 0xfb, 0x7f, 0x00, 0x30, - 0x49, 0x52, 0x05, 0x30, 0x05, 0x2c, 0x17, 0x03, 0x1e, 0xbd, 0xd2, 0xba, - 0x92, 0xb8, 0x6a, 0x0b, 0x61, 0x0e, 0xf9, 0x2f, 0x61, 0x1a, 0x01, 0x2f, - 0x5d, 0x0e, 0xf5, 0x2f, 0xd4, 0x7f, 0x02, 0x30, 0x1f, 0x2c, 0xe3, 0x7f, - 0x85, 0x01, 0xd1, 0x03, 0x7c, 0x0e, 0x03, 0x2f, 0x7c, 0x1a, 0x0f, 0x2f, - 0x73, 0x0f, 0x0d, 0x2f, 0xe3, 0x6f, 0xde, 0x04, 0x5f, 0xba, 0x11, 0xbf, - 0xb4, 0x0b, 0xd4, 0x6f, 0x27, 0x07, 0xb3, 0x25, 0xd1, 0xbf, 0xeb, 0x7f, - 0x07, 0x00, 0xb4, 0x25, 0x96, 0x02, 0xdb, 0x7f, 0x2f, 0xbf, 0x9e, 0xbf, - 0x01, 0xb8, 0xd2, 0xba, 0x21, 0xb9, 0x92, 0xb8, 0x06, 0x0a, 0x6f, 0x0b, - 0x40, 0x90, 0xdf, 0x2f, 0x40, 0x91, 0xdd, 0x2f, 0xfb, 0x6f, 0xd0, 0x5f, - 0xb8, 0x2e, 0x57, 0x50, 0x41, 0x30, 0x02, 0x40, 0x51, 0x0a, 0x01, 0x42, - 0x18, 0x82, 0x4b, 0x50, 0x60, 0x42, 0x70, 0x3c, 0x4d, 0x54, 0x42, 0x42, - 0x69, 0x82, 0x82, 0x32, 0x43, 0x40, 0x18, 0x08, 0x02, 0x0a, 0x40, 0x42, - 0x42, 0x80, 0x02, 0x3f, 0x01, 0x40, 0x10, 0x50, 0x4a, 0x08, 0xfb, 0x7f, - 0x11, 0x42, 0x0b, 0x31, 0x0b, 0x42, 0x3e, 0x80, 0x01, 0x32, 0x01, 0x42, - 0x00, 0x2e, 0x01, 0x2e, 0x40, 0xf0, 0x13, 0x90, 0x20, 0x2f, 0x03, 0x30, - 0x51, 0x50, 0x4f, 0x54, 0xf4, 0x34, 0x06, 0x30, 0x55, 0x52, 0x55, 0x32, - 0x1d, 0x1a, 0xe3, 0x22, 0x18, 0x1a, 0x53, 0x58, 0xe3, 0x22, 0x04, 0x30, - 0xd5, 0x40, 0xb5, 0x0d, 0xe1, 0xbe, 0x6f, 0xbb, 0x80, 0x91, 0xa9, 0x0d, - 0x01, 0x89, 0xb5, 0x23, 0x10, 0xa1, 0xf7, 0x2f, 0xda, 0x0e, 0xf4, 0x34, - 0xeb, 0x2f, 0x01, 0x2e, 0x25, 0x00, 0x70, 0x1a, 0x00, 0x30, 0x21, 0x30, - 0x02, 0x2c, 0x08, 0x22, 0x30, 0x30, 0x00, 0xb2, 0x06, 0x2f, 0x21, 0x2e, - 0x59, 0xf0, 0x98, 0x2e, 0xd8, 0x00, 0x00, 0x2e, 0x00, 0x2e, 0xd0, 0x2e, - 0xfb, 0x6f, 0xf0, 0x5f, 0xb8, 0x2e, 0x01, 0x2e, 0xb1, 0xf0, 0x59, 0x52, - 0x01, 0x0a, 0x21, 0x2e, 0xb1, 0xf0, 0x01, 0x2e, 0x1c, 0x01, 0x0f, 0xbc, - 0x0f, 0xb8, 0x00, 0x90, 0x45, 0x50, 0x02, 0x2f, 0xc0, 0x2e, 0x21, 0x2e, - 0xbc, 0xf0, 0xc0, 0x2e, 0x21, 0x2e, 0xba, 0xf0, 0x1a, 0x24, 0x26, 0x00, - 0x80, 0x2e, 0x8f, 0x00, 0x03, 0x2e, 0x01, 0x01, 0x05, 0x2e, 0x01, 0x01, - 0x92, 0xbd, 0x20, 0x50, 0x03, 0x2e, 0x01, 0x01, 0xbf, 0xba, 0x21, 0xbd, - 0x2f, 0xbb, 0x1f, 0xba, 0x40, 0x91, 0xf0, 0x7f, 0x04, 0x2f, 0x80, 0x91, - 0x02, 0x2f, 0x00, 0xb3, 0x90, 0x2e, 0xc7, 0xb0, 0x03, 0x2e, 0x7b, 0x00, - 0x01, 0x80, 0x40, 0x90, 0x14, 0x2f, 0x41, 0x84, 0xf1, 0x6f, 0x25, 0x2e, - 0x7b, 0x00, 0x41, 0x40, 0x23, 0x2e, 0x5a, 0x00, 0x47, 0x52, 0x12, 0x40, - 0x52, 0x42, 0x02, 0x30, 0x00, 0x40, 0x40, 0x42, 0xe0, 0x5f, 0x25, 0x2e, - 0x57, 0x00, 0x25, 0x2e, 0x58, 0x00, 0x25, 0x2e, 0x5d, 0x00, 0xb8, 0x2e, - 0x07, 0x2e, 0x00, 0x01, 0x03, 0x2e, 0x01, 0x01, 0x05, 0x2e, 0x00, 0x01, - 0x24, 0xbd, 0x0f, 0x2e, 0x59, 0x00, 0xb5, 0xbd, 0x93, 0xbc, 0x2f, 0xb9, - 0xb5, 0xb9, 0x93, 0xb8, 0x3a, 0x1a, 0x06, 0x2f, 0x07, 0x30, 0x25, 0x2e, - 0x59, 0x00, 0x2f, 0x2e, 0x57, 0x00, 0x2f, 0x2e, 0x58, 0x00, 0x40, 0xb3, - 0x05, 0x30, 0x07, 0x30, 0x0a, 0x2f, 0xf7, 0x6f, 0xe6, 0x7f, 0x00, 0x2e, - 0xc6, 0x41, 0x0f, 0x2e, 0x5a, 0x00, 0xb7, 0x05, 0x80, 0xa9, 0xee, 0x05, - 0xf7, 0x23, 0xe6, 0x6f, 0x80, 0xb3, 0x06, 0x30, 0x09, 0x2f, 0xe7, 0x7f, - 0x00, 0x2e, 0x06, 0x40, 0x0f, 0x2e, 0x5b, 0x00, 0xb7, 0x05, 0x80, 0xa9, - 0xee, 0x05, 0xb7, 0x23, 0xe7, 0x6f, 0x00, 0xb3, 0x04, 0x30, 0x0b, 0x2f, - 0xf4, 0x6f, 0x02, 0x89, 0xe7, 0x7f, 0x00, 0x2e, 0x04, 0x41, 0x0f, 0x2e, - 0x5c, 0x00, 0x27, 0x05, 0x00, 0xa9, 0xec, 0x05, 0x27, 0x23, 0xe7, 0x6f, - 0x7b, 0x0f, 0x17, 0x30, 0x0b, 0x2f, 0x73, 0x0f, 0x05, 0x30, 0x17, 0x30, - 0x07, 0x2f, 0x63, 0x0f, 0x15, 0x30, 0x17, 0x30, 0x00, 0x2f, 0x07, 0x30, - 0xe3, 0x0e, 0x00, 0x2f, 0x05, 0x30, 0x80, 0x90, 0x05, 0x2e, 0x57, 0x00, - 0x13, 0x30, 0x13, 0x29, 0xf2, 0x6f, 0x47, 0x5c, 0x17, 0x2f, 0xc0, 0x91, - 0x05, 0x30, 0x0b, 0x2f, 0x07, 0x2e, 0x58, 0x00, 0xc1, 0x86, 0x2b, 0x2e, - 0x57, 0x00, 0x59, 0x0e, 0x27, 0x2e, 0x58, 0x00, 0x24, 0x2f, 0x2b, 0x2e, - 0x5d, 0x00, 0x22, 0x2d, 0x61, 0x0e, 0x29, 0x2e, 0x57, 0x00, 0x2b, 0x2e, - 0x58, 0x00, 0x1b, 0x2f, 0x27, 0x2e, 0x5d, 0x00, 0x19, 0x2d, 0x40, 0x91, - 0x05, 0x2f, 0x01, 0x30, 0x23, 0x2e, 0x57, 0x00, 0x23, 0x2e, 0x5d, 0x00, - 0x06, 0x2d, 0x29, 0x2e, 0x57, 0x00, 0x61, 0x0e, 0x01, 0x2f, 0x27, 0x2e, - 0x5d, 0x00, 0x81, 0x40, 0x23, 0x2e, 0x5a, 0x00, 0x30, 0x25, 0x47, 0x52, - 0xd4, 0x40, 0x54, 0x42, 0x00, 0x2e, 0xc3, 0x40, 0x43, 0x42, 0x00, 0x2e, - 0x03, 0x2e, 0x5d, 0x00, 0x40, 0xb2, 0x0d, 0x2f, 0x81, 0x40, 0x23, 0x2e, - 0x5a, 0x00, 0x11, 0x40, 0x91, 0x43, 0x01, 0x34, 0x00, 0x40, 0x80, 0x43, - 0x23, 0x2e, 0x5e, 0xf0, 0x03, 0x2d, 0x00, 0x30, 0x21, 0x2e, 0x7b, 0x00, - 0xe0, 0x5f, 0xb8, 0x2e, 0x50, 0x50, 0xf0, 0x7f, 0x1a, 0x25, 0x13, 0x40, - 0x7b, 0x84, 0xe0, 0x7f, 0x83, 0x42, 0x35, 0x30, 0x11, 0x40, 0x04, 0x40, - 0xc1, 0x7f, 0xd4, 0x7f, 0x86, 0x31, 0x07, 0x2e, 0x59, 0xf0, 0x03, 0x2e, - 0x1f, 0x01, 0x0d, 0x09, 0x02, 0xab, 0x05, 0x30, 0x8e, 0x09, 0x2c, 0x23, - 0xe3, 0xba, 0x42, 0xab, 0x16, 0x30, 0x75, 0x23, 0x59, 0x5c, 0x8e, 0x09, - 0x66, 0xbb, 0x82, 0xab, 0x27, 0x30, 0xbe, 0x23, 0x3e, 0x80, 0x25, 0x1a, - 0x06, 0x2f, 0x2e, 0x1a, 0x04, 0x2f, 0x26, 0x1a, 0x02, 0x2f, 0xf7, 0x3d, - 0x03, 0x2c, 0xdf, 0x08, 0x07, 0x32, 0xdf, 0x0a, 0x14, 0x01, 0x55, 0x01, - 0x04, 0x41, 0x14, 0x42, 0x16, 0x01, 0x42, 0x41, 0x45, 0x30, 0x4d, 0x09, - 0x04, 0x41, 0x12, 0x42, 0x04, 0x42, 0x40, 0xb3, 0x04, 0x2f, 0xf0, 0x6f, - 0x02, 0x30, 0x04, 0x40, 0x94, 0x04, 0x02, 0x42, 0x00, 0x32, 0x08, 0x08, - 0x00, 0xb2, 0x00, 0x30, 0x05, 0x2f, 0xe2, 0x6f, 0x00, 0x2e, 0x84, 0x40, - 0x04, 0x05, 0x84, 0x42, 0x00, 0x2e, 0x5b, 0x54, 0x4a, 0x08, 0x40, 0xb2, - 0xf1, 0x6f, 0x04, 0x2f, 0x42, 0x82, 0x00, 0x2e, 0x42, 0x40, 0x02, 0x04, - 0x40, 0x42, 0xb0, 0x5f, 0x27, 0x2e, 0x59, 0xf0, 0xb8, 0x2e, 0x50, 0x50, - 0xf7, 0x7f, 0x00, 0x2e, 0x0f, 0x2e, 0xb8, 0xf0, 0xf8, 0xbf, 0xff, 0xbb, - 0xc0, 0xb3, 0x2a, 0x2f, 0x0f, 0x2e, 0x01, 0xf0, 0xfe, 0xbf, 0xe6, 0x7f, - 0x7e, 0xbb, 0xd5, 0x7f, 0x37, 0x30, 0x5f, 0x5a, 0xbe, 0x05, 0x67, 0x41, - 0xc4, 0x7f, 0x78, 0xbe, 0x47, 0x41, 0x27, 0x0b, 0xb3, 0x7f, 0xe6, 0x11, - 0x41, 0x56, 0x43, 0x89, 0xd7, 0x42, 0x00, 0x2e, 0x27, 0x41, 0x05, 0x41, - 0xf8, 0xbf, 0x7d, 0x0b, 0x6e, 0x11, 0x03, 0x8f, 0xd5, 0x42, 0x14, 0x30, - 0xe5, 0x41, 0xc7, 0x41, 0xd8, 0xbe, 0x6f, 0x0b, 0x6e, 0x11, 0xc5, 0x42, - 0x29, 0x2e, 0x56, 0x00, 0x45, 0x56, 0x27, 0x2e, 0xb8, 0xf0, 0xe6, 0x6f, - 0xd5, 0x6f, 0xc4, 0x6f, 0xb3, 0x6f, 0xf7, 0x6f, 0xb0, 0x5f, 0xc8, 0x2e, - 0x50, 0x50, 0xe5, 0x7f, 0xd7, 0x7f, 0xf6, 0x7f, 0x36, 0x30, 0x0b, 0x2e, - 0x01, 0xf0, 0xde, 0xbe, 0xde, 0xbb, 0x61, 0x5a, 0xb7, 0x05, 0x67, 0x41, - 0xc4, 0x7f, 0x78, 0xbe, 0x47, 0x41, 0x27, 0x0b, 0xb3, 0x7f, 0xe6, 0x11, - 0x43, 0x56, 0x43, 0x89, 0xd7, 0x42, 0x00, 0x2e, 0x27, 0x41, 0x05, 0x41, - 0xf8, 0xbf, 0x7d, 0x0b, 0x6e, 0x11, 0x03, 0x8f, 0xd5, 0x42, 0x14, 0x30, - 0xe5, 0x41, 0xc7, 0x41, 0xd8, 0xbe, 0x6f, 0x0b, 0x6e, 0x11, 0xc5, 0x42, - 0x29, 0x2e, 0x55, 0x00, 0x03, 0x31, 0x27, 0x2e, 0xb8, 0xf0, 0xf6, 0x6f, - 0xe5, 0x6f, 0xd7, 0x6f, 0xc4, 0x6f, 0xb3, 0x6f, 0xb0, 0x5f, 0xc8, 0x2e, - 0x40, 0x50, 0xf6, 0x7f, 0x1a, 0x18, 0x63, 0x56, 0x33, 0x00, 0x06, 0x30, - 0xfe, 0x03, 0x0e, 0xb8, 0xf2, 0xbf, 0x07, 0x0a, 0x2a, 0x18, 0x63, 0x5a, - 0xb5, 0x01, 0x03, 0x30, 0xfb, 0x03, 0x6e, 0xbb, 0xf2, 0xbf, 0xe1, 0x7f, - 0xf7, 0x0b, 0x56, 0x40, 0x36, 0x25, 0x46, 0x40, 0x06, 0x28, 0xc7, 0x7f, - 0x22, 0x18, 0xd1, 0x7f, 0xb5, 0x00, 0x01, 0x30, 0x39, 0x03, 0x2e, 0xb9, - 0x42, 0xbe, 0x14, 0x0b, 0xf2, 0x6f, 0x10, 0x18, 0xb5, 0x00, 0xb9, 0x03, - 0x2e, 0xb9, 0x62, 0xbf, 0x96, 0x0a, 0xb6, 0x6f, 0x30, 0x18, 0x75, 0x01, - 0xb9, 0x03, 0x5c, 0x28, 0xe2, 0xbf, 0xde, 0xb9, 0xd6, 0x6f, 0xdf, 0x0a, - 0x8a, 0x28, 0xc4, 0x6f, 0x82, 0x43, 0x23, 0x29, 0xe5, 0x6f, 0xc0, 0x2e, - 0x44, 0x43, 0xc0, 0x5f, 0x40, 0x50, 0xd0, 0x7f, 0x4a, 0x17, 0x00, 0x40, - 0x01, 0x18, 0x46, 0x25, 0x07, 0x25, 0x65, 0x56, 0xd9, 0x04, 0x53, 0x18, - 0xeb, 0x18, 0x05, 0x30, 0x49, 0x16, 0x69, 0x06, 0xca, 0x18, 0xa6, 0x00, - 0xc7, 0x02, 0x65, 0x58, 0xcb, 0x7f, 0x98, 0x2e, 0x7f, 0xb6, 0xcb, 0x6f, - 0xd2, 0x6f, 0xc0, 0x2e, 0x80, 0x42, 0xc0, 0x5f, 0x09, 0x2e, 0x1b, 0x01, - 0x05, 0x2e, 0x1b, 0x01, 0xa3, 0xbc, 0x44, 0xbe, 0x90, 0x50, 0x4f, 0xb9, - 0x07, 0x2e, 0x1b, 0x01, 0x4a, 0x25, 0x9f, 0xb8, 0x39, 0x8f, 0xb2, 0xbd, - 0xf2, 0x7f, 0xbf, 0xb9, 0xeb, 0x7f, 0x8a, 0x0a, 0x37, 0x89, 0x0b, 0x30, - 0x93, 0x0a, 0x8b, 0x7f, 0xcb, 0x43, 0x0b, 0x43, 0x80, 0xb2, 0xd3, 0x7f, - 0xc1, 0x7f, 0x90, 0x2e, 0x87, 0xb2, 0x20, 0x25, 0x01, 0x2e, 0x64, 0x00, - 0x01, 0x90, 0x0e, 0x2f, 0x67, 0x52, 0x01, 0x2e, 0x61, 0x00, 0xb4, 0x7f, - 0xa2, 0x7f, 0x98, 0x2e, 0x8d, 0xb2, 0x00, 0x30, 0x21, 0x2e, 0x64, 0x00, - 0xc1, 0x6f, 0xd3, 0x6f, 0xa2, 0x6f, 0xb4, 0x6f, 0x0b, 0x30, 0x01, 0x2e, - 0x1b, 0x01, 0x06, 0xbc, 0x06, 0xbb, 0x57, 0x25, 0x01, 0x2e, 0x1b, 0x01, - 0x94, 0xb1, 0x05, 0xbc, 0xb6, 0x7f, 0x0f, 0xbb, 0x6b, 0x50, 0x80, 0xb3, - 0x0f, 0x2f, 0x0d, 0x2e, 0x1b, 0x01, 0x6f, 0x5e, 0xb7, 0x09, 0x2d, 0x2e, - 0x1b, 0x01, 0x71, 0x5c, 0x69, 0x5e, 0x9b, 0x43, 0x9b, 0x43, 0xdb, 0x43, - 0x9b, 0x43, 0x1b, 0x42, 0xcb, 0x43, 0x0b, 0x42, 0x8b, 0x43, 0x40, 0xb2, - 0x05, 0x2f, 0x69, 0x50, 0x00, 0x2e, 0x16, 0x40, 0x0b, 0x40, 0x76, 0x7f, - 0x8b, 0x7f, 0xcb, 0x0a, 0x01, 0x2e, 0x61, 0x00, 0x67, 0x52, 0x6d, 0x5c, - 0x98, 0x2e, 0xd3, 0xb2, 0x90, 0x6f, 0x00, 0xb2, 0x0b, 0x2f, 0xf0, 0x6f, - 0x00, 0xb2, 0x08, 0x2f, 0x69, 0x58, 0x6b, 0x50, 0x12, 0x41, 0x12, 0x42, - 0x21, 0x30, 0x04, 0x41, 0x04, 0x42, 0x23, 0x2e, 0x5e, 0xf0, 0xc0, 0x6f, - 0x00, 0xb2, 0x26, 0x2f, 0x74, 0x6f, 0x80, 0x6f, 0x71, 0x54, 0x88, 0xbd, - 0xc8, 0xb8, 0x4b, 0x0a, 0x94, 0x42, 0x91, 0x42, 0x90, 0x42, 0x88, 0xba, - 0x69, 0x52, 0xf3, 0x6f, 0x54, 0x42, 0x85, 0x42, 0xc0, 0x90, 0x40, 0x42, - 0x15, 0x2f, 0x6b, 0x52, 0x00, 0x2e, 0x52, 0x40, 0x41, 0x40, 0xa2, 0x04, - 0x41, 0x06, 0x40, 0xaa, 0x04, 0x2f, 0x40, 0x90, 0x0b, 0x2f, 0xb1, 0x6f, - 0x4a, 0x0f, 0x08, 0x2f, 0xb2, 0x6f, 0x80, 0xb2, 0x05, 0x2f, 0x6b, 0x54, - 0x21, 0x30, 0x94, 0x42, 0x80, 0x42, 0x23, 0x2e, 0x5e, 0xf0, 0xd0, 0x6f, - 0x00, 0xb2, 0x13, 0x2f, 0x01, 0x2e, 0x60, 0x00, 0x09, 0x2e, 0x7c, 0x00, - 0x04, 0x1a, 0x0d, 0x2f, 0x73, 0x50, 0x29, 0x2e, 0x60, 0x00, 0x24, 0x42, - 0x44, 0x30, 0x02, 0x40, 0x02, 0x42, 0x09, 0x80, 0x00, 0x2e, 0x04, 0x42, - 0x03, 0x2d, 0x10, 0x30, 0x21, 0x2e, 0x64, 0x00, 0xeb, 0x6f, 0x70, 0x5f, - 0xb8, 0x2e, 0x09, 0x86, 0x49, 0x54, 0xe4, 0x40, 0xc3, 0x80, 0x94, 0x04, - 0xc3, 0x40, 0x13, 0x05, 0x05, 0x40, 0x25, 0x05, 0x8a, 0x17, 0x73, 0x30, - 0x73, 0x09, 0x8c, 0x17, 0xf3, 0x08, 0xe3, 0x00, 0x4c, 0x82, 0x95, 0x00, - 0xb3, 0xb5, 0x23, 0xb5, 0x53, 0x42, 0x52, 0x42, 0x53, 0x42, 0x42, 0x42, - 0x71, 0x82, 0x75, 0x54, 0x52, 0x42, 0x10, 0x50, 0x77, 0x54, 0x52, 0x42, - 0xfb, 0x7f, 0x22, 0x30, 0x79, 0x56, 0x43, 0x42, 0x44, 0x82, 0x0b, 0x30, - 0x52, 0x42, 0x5b, 0x42, 0x7c, 0x84, 0x4b, 0x42, 0x35, 0x82, 0x8c, 0x80, - 0x8b, 0x42, 0x0b, 0x42, 0x39, 0x80, 0x04, 0x30, 0x0b, 0x42, 0x37, 0x80, - 0x15, 0x30, 0x60, 0x25, 0x98, 0x2e, 0xc6, 0xb2, 0x8b, 0x83, 0xfb, 0x6f, - 0x65, 0x42, 0xc0, 0x2e, 0x44, 0x42, 0xf0, 0x5f, 0x05, 0x80, 0x02, 0x30, - 0x51, 0x82, 0x02, 0x42, 0x13, 0x30, 0x41, 0x40, 0x4b, 0x08, 0x7b, 0x54, - 0x3e, 0x80, 0x51, 0x14, 0xc0, 0x2e, 0x01, 0x42, 0x00, 0x2e, 0x40, 0x51, - 0xd1, 0x7f, 0x12, 0x25, 0x02, 0x30, 0x42, 0x43, 0x32, 0x30, 0x82, 0x43, - 0xc6, 0x7f, 0xe5, 0x7f, 0xb4, 0x7f, 0xa3, 0x7f, 0x90, 0x7f, 0x8b, 0x7f, - 0x98, 0x2e, 0x54, 0x01, 0xc0, 0x7e, 0x00, 0xac, 0x01, 0x2f, 0x65, 0x50, - 0xc0, 0x7e, 0x00, 0x2e, 0x90, 0x6f, 0x09, 0x8a, 0xd1, 0x6f, 0x75, 0x7f, - 0x4c, 0x82, 0x63, 0x41, 0x65, 0x7f, 0x11, 0x7f, 0x00, 0x2e, 0x64, 0x41, - 0x44, 0x85, 0x52, 0x7f, 0x45, 0x7f, 0x00, 0x2e, 0xa6, 0x40, 0x80, 0x40, - 0x32, 0x7f, 0x82, 0x8e, 0xc2, 0x6e, 0x45, 0x41, 0xf0, 0x7f, 0x27, 0x7f, - 0x02, 0x7f, 0x98, 0x2e, 0x8a, 0xb1, 0x23, 0x6f, 0xd1, 0x6f, 0xc2, 0x40, - 0xf9, 0x86, 0x23, 0x7f, 0x80, 0xb2, 0xe0, 0x7e, 0x0f, 0x2f, 0x32, 0x6f, - 0x64, 0x6f, 0x82, 0x40, 0xf2, 0x7f, 0x4e, 0x82, 0x42, 0x6f, 0x50, 0x6f, - 0x73, 0x6f, 0x85, 0x40, 0xc3, 0x40, 0x04, 0x41, 0x06, 0x40, 0xe2, 0x6e, - 0x98, 0x2e, 0x8a, 0xb1, 0xe0, 0x7e, 0xf3, 0x31, 0x10, 0x6f, 0x36, 0x80, - 0xe1, 0x6e, 0x02, 0x40, 0x71, 0x7f, 0x51, 0x04, 0x02, 0x30, 0x40, 0xa8, - 0x91, 0x04, 0x4a, 0x22, 0x89, 0x16, 0x93, 0x08, 0x4a, 0x00, 0x95, 0xb4, - 0x09, 0x18, 0x8e, 0x16, 0x13, 0x30, 0x93, 0x08, 0x21, 0x6f, 0x60, 0x7f, - 0x4d, 0x86, 0x02, 0x80, 0xb2, 0x00, 0x41, 0x40, 0x21, 0xb5, 0x50, 0x7f, - 0x43, 0x7f, 0x98, 0x2e, 0xc2, 0xb1, 0x40, 0x6f, 0x62, 0x6f, 0x55, 0x6f, - 0x13, 0x40, 0x84, 0x40, 0x01, 0x40, 0x45, 0x41, 0x42, 0xbe, 0x1d, 0x18, - 0x4c, 0x04, 0x31, 0x0f, 0x04, 0x8a, 0xc0, 0x6f, 0x11, 0x30, 0x02, 0x2f, - 0x00, 0x2e, 0x03, 0x2c, 0x01, 0x42, 0x23, 0x30, 0x03, 0x42, 0x00, 0x2e, - 0xd6, 0x6f, 0x44, 0x41, 0x8a, 0x87, 0x76, 0x8b, 0x00, 0xb3, 0x53, 0x7f, - 0x15, 0x2f, 0x04, 0x6f, 0x7d, 0x5e, 0x8b, 0x8d, 0xe7, 0x01, 0xc0, 0xa5, - 0x84, 0x41, 0x01, 0x2f, 0x00, 0xa1, 0x03, 0x2f, 0xc0, 0xad, 0x08, 0x2f, - 0x00, 0xa5, 0x06, 0x2f, 0xc6, 0x40, 0x81, 0x8d, 0x07, 0x30, 0x3c, 0x05, - 0xd6, 0x42, 0x04, 0x2c, 0xc4, 0x42, 0x02, 0x2c, 0x07, 0x30, 0x07, 0x30, - 0x86, 0x86, 0x94, 0x6f, 0xd7, 0x7e, 0x0e, 0x8d, 0x00, 0x40, 0x74, 0x89, - 0xc7, 0x40, 0x02, 0xb2, 0xf9, 0x29, 0x45, 0x41, 0x86, 0x41, 0xbe, 0x80, - 0x21, 0x41, 0x75, 0x23, 0x82, 0x40, 0xc7, 0x42, 0x45, 0x7f, 0x34, 0x7f, - 0x20, 0x7f, 0x98, 0x2e, 0xc2, 0xb1, 0x31, 0x6f, 0x60, 0x6f, 0x24, 0x6f, - 0x22, 0x40, 0x05, 0x41, 0x43, 0x40, 0x13, 0x01, 0x43, 0x86, 0xac, 0x0f, - 0xd1, 0x6f, 0x30, 0x7f, 0x00, 0x2f, 0x44, 0x42, 0x48, 0x8a, 0x41, 0x88, - 0xe1, 0x40, 0x13, 0x7f, 0x04, 0x7f, 0xf5, 0x7e, 0x98, 0x2e, 0xc2, 0xb1, - 0x11, 0x6f, 0x60, 0x6f, 0x34, 0x6f, 0x42, 0x40, 0x03, 0x40, 0x9a, 0x04, - 0x04, 0x41, 0x43, 0x82, 0xa2, 0x0e, 0x03, 0x6f, 0x00, 0x2f, 0xc2, 0x42, - 0x00, 0x2e, 0x41, 0x40, 0x72, 0x6f, 0x98, 0x2e, 0xc2, 0xb1, 0x25, 0x6f, - 0x72, 0x6f, 0x53, 0x41, 0x93, 0x0e, 0xd1, 0x6f, 0x46, 0x80, 0x1b, 0x30, - 0x03, 0x30, 0x0c, 0x2f, 0x04, 0x40, 0x00, 0x91, 0x42, 0x42, 0x08, 0x2f, - 0xf6, 0x6e, 0x44, 0x6f, 0x86, 0x41, 0xb4, 0x0e, 0x03, 0x2f, 0x02, 0x88, - 0xdb, 0x7e, 0x03, 0x43, 0x0b, 0x42, 0x46, 0x8d, 0x44, 0x41, 0x47, 0x80, - 0x05, 0x6f, 0x94, 0x0f, 0x76, 0x7f, 0x60, 0x7f, 0x02, 0x2f, 0x45, 0x89, - 0x42, 0x43, 0x03, 0x43, 0x49, 0x88, 0xa5, 0x6f, 0x40, 0x91, 0xa4, 0x7f, - 0x15, 0x30, 0xe2, 0x6f, 0xd3, 0x6e, 0x03, 0x2f, 0x04, 0x30, 0x83, 0x42, - 0x80, 0x2e, 0x77, 0xb4, 0x04, 0x40, 0x25, 0x29, 0x04, 0x42, 0x83, 0x42, - 0x45, 0x82, 0x94, 0x6f, 0x04, 0x85, 0xc0, 0xb2, 0x90, 0x2e, 0x63, 0xb4, - 0x15, 0x87, 0x3c, 0x8c, 0xc4, 0x40, 0x46, 0x7f, 0xc2, 0x86, 0x07, 0x40, - 0x86, 0x41, 0xf4, 0xbf, 0x00, 0xb3, 0x0c, 0x2f, 0x90, 0x6f, 0x16, 0x80, - 0x46, 0x25, 0x00, 0x40, 0x57, 0x25, 0x04, 0x18, 0xae, 0x0e, 0x10, 0x30, - 0x06, 0x30, 0x75, 0x25, 0x46, 0x23, 0x60, 0x6f, 0x64, 0x25, 0xc4, 0x40, - 0xfa, 0x86, 0x00, 0xb3, 0x33, 0x7f, 0x09, 0x2f, 0x93, 0x6f, 0xd8, 0x88, - 0x53, 0x6f, 0x04, 0x41, 0xc3, 0x40, 0xdc, 0x0e, 0x13, 0x30, 0x04, 0x30, - 0xdc, 0x22, 0xb3, 0x25, 0x40, 0xb3, 0x02, 0x2f, 0x3b, 0x25, 0xc0, 0x90, - 0x05, 0x2f, 0x91, 0x6f, 0xd0, 0x6f, 0x98, 0x2e, 0xc6, 0xb2, 0x4d, 0x2c, - 0x04, 0x30, 0x8d, 0x88, 0x43, 0x40, 0x82, 0x40, 0x54, 0x7f, 0xda, 0x0f, - 0x04, 0x30, 0x08, 0x2f, 0xc1, 0x80, 0x40, 0x42, 0xc2, 0x0f, 0x02, 0x2f, - 0x00, 0x30, 0xc0, 0x7e, 0x1b, 0x2d, 0xc0, 0x7e, 0x19, 0x2d, 0xe1, 0xbc, - 0x92, 0x6f, 0x4f, 0x04, 0x90, 0x84, 0x40, 0xa8, 0x21, 0x05, 0x83, 0x40, - 0x4c, 0x22, 0x4b, 0x0e, 0xb6, 0x84, 0x21, 0x30, 0x02, 0x2f, 0x11, 0x30, - 0x04, 0x2c, 0xc1, 0x7e, 0xe3, 0x6f, 0xc1, 0x7e, 0xc1, 0x42, 0x00, 0x2e, - 0x00, 0x40, 0x81, 0x40, 0x04, 0xbd, 0x40, 0x6f, 0x98, 0x2e, 0xc2, 0xb1, - 0x50, 0x6f, 0x11, 0x30, 0x02, 0x40, 0x51, 0x08, 0xc3, 0x6e, 0x03, 0x80, - 0x99, 0x15, 0x0b, 0x40, 0xb1, 0x6f, 0xd0, 0x6f, 0xb6, 0x7f, 0x5b, 0x7f, - 0x04, 0x30, 0x4d, 0x54, 0x03, 0x30, 0x11, 0x2c, 0x10, 0x80, 0x55, 0x6f, - 0x06, 0x40, 0x75, 0x01, 0x58, 0xbb, 0x6a, 0x09, 0x05, 0x42, 0xc1, 0x86, - 0x47, 0x40, 0x51, 0x25, 0xbe, 0x01, 0x56, 0x43, 0x00, 0x2e, 0x46, 0x41, - 0xf4, 0x03, 0xb6, 0x6f, 0x47, 0x43, 0x5e, 0x0e, 0xed, 0x2f, 0x31, 0x6f, - 0x60, 0x6f, 0x42, 0x40, 0x15, 0x30, 0x02, 0x82, 0x95, 0x08, 0x04, 0x42, - 0x52, 0x42, 0x02, 0x2c, 0x44, 0x42, 0x04, 0x30, 0x3e, 0x8e, 0x91, 0x6f, - 0x4f, 0x8c, 0x02, 0x40, 0x83, 0x41, 0xb5, 0x8d, 0x93, 0x0e, 0xd0, 0x6f, - 0x01, 0x2f, 0x98, 0x2e, 0xc6, 0xb2, 0x00, 0x2e, 0xc0, 0x41, 0x81, 0x41, - 0xc1, 0x0f, 0xc0, 0x6f, 0x01, 0x2f, 0x04, 0x42, 0x00, 0x2e, 0x70, 0x6f, - 0x3c, 0x82, 0x00, 0x40, 0x41, 0x40, 0x89, 0x16, 0x95, 0x08, 0x4a, 0x00, - 0x04, 0xbc, 0x91, 0xb4, 0x01, 0x0e, 0xe0, 0x6f, 0x07, 0x2f, 0xa1, 0x6f, - 0x00, 0x2e, 0x41, 0x40, 0x40, 0xb2, 0x02, 0x2f, 0xa1, 0x6f, 0x05, 0x42, - 0x44, 0x42, 0x00, 0x2e, 0x8b, 0x6f, 0xc0, 0x5e, 0xb8, 0x2e, 0x03, 0x2e, - 0x1c, 0x01, 0x9c, 0xbc, 0x1d, 0xb9, 0x02, 0x82, 0x25, 0x2e, 0x8e, 0x00, - 0x83, 0x56, 0x13, 0x18, 0x01, 0x2e, 0x66, 0x00, 0x43, 0x40, 0xd8, 0x04, - 0x05, 0x2e, 0x65, 0x00, 0x40, 0x50, 0x27, 0x2e, 0x65, 0x00, 0xfb, 0x7f, - 0xda, 0x05, 0x8b, 0x50, 0x4b, 0x40, 0x02, 0x40, 0x81, 0x82, 0x01, 0x42, - 0x03, 0x80, 0x81, 0x52, 0xb1, 0x00, 0x03, 0x40, 0x3b, 0x82, 0x85, 0x58, - 0x14, 0x01, 0xc0, 0xb2, 0x37, 0x2e, 0x66, 0x00, 0xd1, 0x7f, 0xe2, 0x7f, - 0x04, 0x2f, 0x05, 0x2e, 0x6b, 0x00, 0x81, 0x84, 0x25, 0x2e, 0x6b, 0x00, - 0x62, 0x40, 0x3a, 0x0f, 0x45, 0x40, 0xc1, 0x7f, 0x21, 0x30, 0x12, 0x30, - 0x42, 0x2f, 0x0d, 0x2e, 0x69, 0x00, 0x3e, 0x0e, 0x33, 0x2f, 0x05, 0x2e, - 0x6a, 0x00, 0x01, 0x35, 0x91, 0x0e, 0x01, 0x30, 0x03, 0x2f, 0x09, 0x2e, - 0x6e, 0x00, 0x00, 0xb3, 0x24, 0x2f, 0xc0, 0x35, 0x90, 0x0e, 0x39, 0x2f, - 0x8f, 0x50, 0x02, 0x30, 0x01, 0x40, 0x7f, 0x82, 0x43, 0xa2, 0x02, 0x2f, - 0x00, 0x2e, 0x0c, 0x2c, 0x01, 0x30, 0xc0, 0xb2, 0x11, 0x30, 0x02, 0x2f, - 0x25, 0x2e, 0x6d, 0x00, 0x03, 0x2d, 0x23, 0x2e, 0x6d, 0x00, 0x21, 0x30, - 0x25, 0x2e, 0x6b, 0x00, 0x42, 0xb2, 0x04, 0x2f, 0x41, 0xb2, 0x02, 0x2f, - 0x25, 0x2e, 0x6d, 0x00, 0x31, 0x30, 0x3e, 0x80, 0x04, 0x86, 0x25, 0x2e, - 0x6c, 0x00, 0x02, 0x42, 0xc2, 0x42, 0x18, 0x2d, 0x02, 0x35, 0x01, 0x42, - 0x25, 0x2e, 0x6a, 0x00, 0x13, 0x2d, 0x2c, 0x04, 0x38, 0x1e, 0x21, 0x2e, - 0x69, 0x00, 0x7f, 0x50, 0x11, 0x30, 0x22, 0x30, 0x98, 0x2e, 0x66, 0xb5, - 0x09, 0x2c, 0x01, 0x30, 0x2c, 0x00, 0x38, 0x1c, 0x21, 0x2e, 0x68, 0x00, - 0x7f, 0x50, 0x98, 0x2e, 0x66, 0xb5, 0x01, 0x30, 0xc0, 0x6f, 0xd4, 0xb1, - 0xf5, 0xbd, 0x6b, 0xba, 0x91, 0x5a, 0x02, 0x40, 0x15, 0x18, 0xf5, 0xbe, - 0xeb, 0xbb, 0xe3, 0x0a, 0x3d, 0x0b, 0xd2, 0x6f, 0xe3, 0x00, 0x84, 0x40, - 0x63, 0x05, 0x93, 0x58, 0x2c, 0x18, 0xf5, 0xbe, 0x03, 0x42, 0xeb, 0xbb, - 0xfd, 0x0b, 0xe0, 0x6f, 0x58, 0x01, 0xdf, 0x01, 0x7d, 0x1f, 0x95, 0x42, - 0x18, 0x04, 0x85, 0x40, 0x5d, 0x05, 0x2c, 0x18, 0x75, 0xbe, 0xeb, 0xba, - 0x2c, 0x0b, 0xdc, 0x04, 0x18, 0x1c, 0x80, 0x42, 0x84, 0x80, 0x02, 0x30, - 0x00, 0x40, 0x00, 0xb2, 0x0c, 0x2f, 0x01, 0x2e, 0x6b, 0x00, 0x03, 0x35, - 0x83, 0x0e, 0x07, 0x2f, 0x8d, 0x50, 0x3e, 0x80, 0x25, 0x2e, 0x6d, 0x00, - 0x02, 0x42, 0x03, 0x80, 0x00, 0x2e, 0x02, 0x42, 0x40, 0xb2, 0x04, 0x2f, - 0x8b, 0x50, 0x04, 0x80, 0x25, 0x2e, 0x6a, 0x00, 0x02, 0x42, 0x42, 0xb2, - 0x89, 0x56, 0x9a, 0x22, 0x41, 0xb2, 0x01, 0x2e, 0x1c, 0x01, 0x87, 0x52, - 0x0b, 0xbc, 0x8a, 0x22, 0x0f, 0xb8, 0x00, 0x90, 0x01, 0x32, 0x06, 0x2f, - 0x10, 0x30, 0x90, 0x08, 0x80, 0xb2, 0x08, 0x2f, 0x23, 0x2e, 0x5e, 0xf0, - 0x06, 0x2d, 0x20, 0x30, 0x90, 0x08, 0x80, 0xb2, 0x01, 0x2f, 0x23, 0x2e, - 0x5e, 0xf0, 0xfb, 0x6f, 0xc0, 0x5f, 0xb8, 0x2e, 0x07, 0x86, 0xfc, 0x88, - 0xc6, 0x40, 0x05, 0x41, 0x31, 0x1a, 0x12, 0x2f, 0x80, 0x91, 0x22, 0x2f, - 0x01, 0x35, 0x29, 0x0f, 0x0a, 0x2f, 0x06, 0x80, 0x00, 0x2e, 0x00, 0x40, - 0x00, 0xb2, 0x01, 0x2f, 0x44, 0xa9, 0x03, 0x2f, 0x00, 0x30, 0xc0, 0x42, - 0x00, 0x43, 0xb8, 0x2e, 0xc2, 0x42, 0x01, 0x43, 0xb8, 0x2e, 0x01, 0x35, - 0xa9, 0x0e, 0x0e, 0x2f, 0x03, 0x3b, 0xeb, 0x00, 0xcc, 0xa8, 0x0a, 0x2f, - 0x05, 0x86, 0xc2, 0x80, 0xc3, 0x40, 0x02, 0x42, 0x3c, 0x84, 0xc1, 0x80, - 0x81, 0x42, 0x82, 0x84, 0xc0, 0x2e, 0x80, 0x42, 0x00, 0x2e, 0xb8, 0x2e, - 0x03, 0x2e, 0x1d, 0x01, 0x9f, 0xbc, 0x9f, 0xb8, 0x90, 0x50, 0x40, 0xb2, - 0x90, 0x2e, 0x71, 0xb6, 0x12, 0x40, 0x03, 0x30, 0x11, 0x40, 0x80, 0xa8, - 0x5a, 0x05, 0x9f, 0x58, 0x55, 0x23, 0x00, 0x40, 0x75, 0x7f, 0x40, 0xa8, - 0x16, 0x41, 0xd9, 0x05, 0xcf, 0x23, 0x56, 0x05, 0x40, 0xa9, 0x9d, 0x05, - 0x87, 0x7f, 0x6e, 0x23, 0x17, 0x41, 0xa5, 0x7f, 0x3e, 0x8b, 0x04, 0x41, - 0x52, 0x43, 0x00, 0xa8, 0x98, 0x05, 0xf2, 0x7f, 0x86, 0x22, 0xcf, 0x05, - 0xc0, 0xa9, 0x9f, 0x05, 0xbe, 0x23, 0x04, 0x05, 0x92, 0x7f, 0x00, 0xa9, - 0xdc, 0x05, 0x51, 0x43, 0xb6, 0x7f, 0x27, 0x23, 0xa7, 0x54, 0xe1, 0x7f, - 0x02, 0x18, 0x7d, 0x83, 0x40, 0x43, 0xeb, 0xba, 0x75, 0xbd, 0xaa, 0x0a, - 0x0b, 0x2e, 0x71, 0x00, 0x77, 0x5c, 0x2e, 0x18, 0xf5, 0xbe, 0x6b, 0xbb, - 0x75, 0x0b, 0xaa, 0x00, 0xc4, 0x7f, 0x25, 0x2e, 0x71, 0x00, 0xb2, 0x6f, - 0xa5, 0x6f, 0xaa, 0x00, 0x54, 0x01, 0x84, 0x6f, 0x72, 0x6f, 0x94, 0x05, - 0x80, 0xa9, 0xde, 0x05, 0xb7, 0x23, 0x99, 0x5e, 0x77, 0x0e, 0x41, 0x40, - 0x97, 0x5c, 0xb1, 0x01, 0xd5, 0x7f, 0x00, 0x2e, 0x85, 0x41, 0x0e, 0x2f, - 0x00, 0xa0, 0x0c, 0x2f, 0x14, 0x0f, 0x04, 0x2f, 0xe0, 0x6f, 0x00, 0xac, - 0x10, 0x30, 0x08, 0x2c, 0x18, 0x22, 0xf0, 0x6f, 0x00, 0xac, 0x30, 0x30, - 0x24, 0x30, 0x02, 0x2c, 0x20, 0x22, 0x40, 0x30, 0x0d, 0x2e, 0x71, 0x00, - 0x80, 0xa1, 0x1e, 0x23, 0x79, 0x5e, 0x37, 0x0f, 0xbc, 0x23, 0x00, 0x90, - 0x14, 0x30, 0x10, 0x30, 0x18, 0x2f, 0x9d, 0x50, 0x30, 0x00, 0x9b, 0x56, - 0x43, 0x0e, 0x02, 0x2f, 0x10, 0x30, 0x0a, 0x2c, 0x03, 0x30, 0x99, 0x50, - 0x10, 0x0e, 0x13, 0x30, 0x00, 0x2f, 0x03, 0x30, 0x90, 0x0f, 0x10, 0x30, - 0x00, 0x2f, 0x00, 0x30, 0x00, 0x90, 0x10, 0x30, 0x00, 0x2f, 0x00, 0x30, - 0xc0, 0x90, 0x13, 0x30, 0x00, 0x2f, 0x03, 0x30, 0x40, 0xb2, 0x87, 0x5c, - 0x22, 0x2f, 0x41, 0x90, 0x4a, 0x2f, 0xa5, 0x50, 0x00, 0x2e, 0x01, 0x40, - 0x41, 0x82, 0x01, 0x42, 0x02, 0x80, 0x4a, 0xa8, 0x01, 0x40, 0x06, 0x2f, - 0xd0, 0x6f, 0x85, 0x0e, 0x3e, 0x2f, 0x41, 0x80, 0x21, 0x2e, 0x78, 0x00, - 0x3b, 0x2d, 0x95, 0x50, 0xfb, 0x7f, 0x4a, 0xa8, 0x06, 0x2f, 0x98, 0x2e, - 0x73, 0xb6, 0xc0, 0x90, 0xfb, 0x6f, 0x32, 0x2f, 0x00, 0x2e, 0x30, 0x2d, - 0x98, 0x2e, 0x73, 0xb6, 0x29, 0x2e, 0x7a, 0x00, 0x2b, 0x2c, 0xfb, 0x6f, - 0xa1, 0x52, 0xd2, 0x6f, 0x95, 0x0e, 0x41, 0x40, 0x05, 0x2f, 0x00, 0x90, - 0x17, 0x2f, 0x05, 0x2e, 0x7a, 0x00, 0x80, 0x90, 0x13, 0x2f, 0x7f, 0x82, - 0x40, 0xac, 0x23, 0x2e, 0x77, 0x00, 0x01, 0x30, 0x18, 0x2f, 0xa1, 0x54, - 0x82, 0x84, 0x23, 0x2e, 0x77, 0x00, 0x82, 0x40, 0x80, 0xb2, 0x11, 0x2f, - 0x00, 0x90, 0x23, 0x2e, 0x79, 0x00, 0x0d, 0x2f, 0x29, 0x2e, 0x72, 0x00, - 0x0b, 0x2d, 0x41, 0x80, 0x21, 0x2e, 0x77, 0x00, 0x0f, 0xa4, 0x05, 0x2f, - 0xa3, 0x50, 0x3e, 0x80, 0xf1, 0x30, 0x29, 0x2e, 0x79, 0x00, 0x01, 0x42, - 0x06, 0x30, 0x34, 0x08, 0x00, 0xb2, 0x02, 0x2f, 0x80, 0x30, 0x21, 0x2e, - 0x5e, 0xf0, 0x70, 0x5f, 0xb8, 0x2e, 0x04, 0x84, 0x01, 0x30, 0x81, 0x42, - 0x82, 0x84, 0x01, 0x42, 0xa1, 0x42, 0x81, 0x42, 0x82, 0x84, 0x00, 0x2e, - 0x91, 0x42, 0x81, 0x42, 0xb8, 0x2e, 0x30, 0x50, 0xf3, 0x7f, 0xc0, 0xac, - 0xe4, 0x7f, 0xd5, 0x7f, 0x03, 0x2f, 0x00, 0x30, 0x82, 0x04, 0xf3, 0x6f, - 0xc3, 0x06, 0x40, 0xad, 0x05, 0x2f, 0xe0, 0x6f, 0x05, 0x30, 0x28, 0x04, - 0xd1, 0x6f, 0x69, 0x07, 0xe0, 0x7f, 0x40, 0xa1, 0x01, 0x30, 0x20, 0x2f, - 0x13, 0x25, 0x02, 0x25, 0x04, 0x32, 0x06, 0x30, 0x02, 0x30, 0x03, 0x30, - 0xaf, 0xbb, 0xb1, 0xbd, 0xdf, 0x0a, 0x9f, 0xbb, 0x21, 0xbd, 0x97, 0x0a, - 0x8f, 0xbb, 0x91, 0xbc, 0x01, 0xbc, 0x4f, 0x0a, 0x6b, 0x0e, 0x04, 0x2f, - 0x6b, 0x1a, 0x07, 0x2f, 0xe7, 0x6f, 0x7a, 0x0f, 0x04, 0x2f, 0xe7, 0x6f, - 0x97, 0x04, 0x17, 0x30, 0x07, 0x0a, 0xdd, 0x06, 0x81, 0x8d, 0x34, 0x0e, - 0xe6, 0x2f, 0x00, 0x2e, 0x0d, 0x2d, 0x6b, 0x0e, 0x00, 0x30, 0x05, 0x2f, - 0x6b, 0x1a, 0x07, 0x2f, 0xe0, 0x6f, 0x42, 0x0f, 0x00, 0x30, 0x03, 0x2f, - 0xe0, 0x6f, 0x90, 0x04, 0xdd, 0x06, 0x10, 0x30, 0xf5, 0x6f, 0xc3, 0x7f, - 0xb2, 0x7f, 0x40, 0xad, 0x06, 0x2f, 0x03, 0x30, 0xb2, 0x6f, 0x9a, 0x04, - 0xc4, 0x6f, 0xdc, 0x06, 0xb2, 0x7f, 0xc3, 0x7f, 0x00, 0x2e, 0xd2, 0x6f, - 0xaa, 0x0c, 0x80, 0xac, 0x02, 0x30, 0x01, 0x2f, 0x10, 0x04, 0x51, 0x06, - 0xd0, 0x5f, 0xb8, 0x2e, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, - 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00 + 0x80, 0x2e, 0xfc, 0x00, 0x80, 0x2e, 0xfe, 0x00, 0xc8, 0x2e, 0x00, 0x2e, + 0x80, 0x2e, 0xfa, 0x00, 0x80, 0x2e, 0x23, 0xb1, 0x80, 0x2e, 0xfd, 0x00, + 0x80, 0x2e, 0xfb, 0x00, 0x80, 0x2e, 0x5a, 0xb1, 0x50, 0x39, 0x21, 0x2e, + 0xb0, 0xf0, 0x10, 0x30, 0x21, 0x2e, 0x16, 0xf0, 0x80, 0x2e, 0xfc, 0x01, + 0x5d, 0x50, 0x45, 0x52, 0x01, 0x42, 0x3b, 0x80, 0x41, 0x30, 0x01, 0x42, + 0x3c, 0x80, 0x00, 0x2e, 0x01, 0x40, 0x01, 0x42, 0x21, 0x2e, 0xff, 0xaf, + 0xb8, 0x2e, 0xb6, 0xd6, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0xfd, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x2e, + 0x99, 0x01, 0x20, 0x26, 0x98, 0x2e, 0xf6, 0x00, 0x98, 0x2e, 0xe9, 0x01, + 0x10, 0x30, 0x21, 0x2e, 0x59, 0xf0, 0x98, 0x2e, 0xd8, 0x00, 0x00, 0x2e, + 0x00, 0x2e, 0xd0, 0x2e, 0x98, 0x2e, 0xdd, 0x00, 0x01, 0x2e, 0x56, 0x00, + 0x00, 0xb2, 0x11, 0x2f, 0x00, 0x30, 0x21, 0x2e, 0x56, 0x00, 0x41, 0x50, + 0x98, 0x2e, 0xcc, 0xb0, 0x41, 0x50, 0x98, 0x2e, 0x8f, 0xb4, 0x01, 0x2e, + 0x03, 0xf0, 0x0d, 0xbc, 0x0f, 0xb8, 0x00, 0x90, 0x02, 0x2f, 0x45, 0x50, + 0x21, 0x2e, 0xbc, 0xf0, 0x01, 0x2e, 0x55, 0x00, 0x00, 0xb2, 0x1a, 0x2f, + 0x00, 0x30, 0x21, 0x2e, 0x55, 0x00, 0x43, 0x50, 0x98, 0x2e, 0xcc, 0xb0, + 0x43, 0x50, 0x98, 0x2e, 0xdc, 0xb1, 0x43, 0x50, 0x98, 0x2e, 0x92, 0xb5, + 0x43, 0x50, 0x98, 0x2e, 0x00, 0xb0, 0x01, 0x2e, 0x1c, 0x01, 0x0f, 0xbc, + 0x0f, 0xb8, 0x00, 0x90, 0x45, 0x50, 0x02, 0x2f, 0x21, 0x2e, 0xbc, 0xf0, + 0x02, 0x2d, 0x21, 0x2e, 0xba, 0xf0, 0x98, 0x2e, 0xd8, 0x00, 0xc3, 0x2d, + 0x01, 0x2e, 0x55, 0xf0, 0xc0, 0x2e, 0x21, 0x2e, 0x55, 0xf0, 0x03, 0x2e, + 0x00, 0xf0, 0x45, 0x54, 0x01, 0x2e, 0x59, 0xf0, 0x4a, 0x0e, 0x02, 0x2f, + 0xf1, 0x33, 0x0d, 0x2c, 0x01, 0x08, 0xf2, 0x30, 0x4a, 0x08, 0x79, 0x84, + 0x82, 0xa2, 0x04, 0x2f, 0x02, 0x34, 0x82, 0x0a, 0x47, 0xa2, 0x03, 0x2c, + 0x10, 0x22, 0x45, 0x52, 0x01, 0x0a, 0xc0, 0x2e, 0x21, 0x2e, 0x59, 0xf0, + 0x00, 0x31, 0xc0, 0x2e, 0x21, 0x2e, 0xba, 0xf0, 0xc8, 0x2e, 0xc8, 0x2e, + 0xc8, 0x2e, 0xc8, 0x2e, 0xc8, 0x2e, 0x44, 0x47, 0xaa, 0x00, 0x05, 0x00, + 0x2d, 0x01, 0xd4, 0x7b, 0x3b, 0x01, 0xdb, 0x7a, 0x04, 0x00, 0x3f, 0x7b, + 0xcd, 0x6c, 0xc3, 0x04, 0x85, 0x09, 0xc3, 0x04, 0xec, 0xe6, 0x0c, 0x46, + 0x01, 0x00, 0x27, 0x00, 0x19, 0x00, 0x96, 0x00, 0xa0, 0x00, 0x01, 0x00, + 0x0c, 0x00, 0xf0, 0x3c, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x43, 0x28, 0x88, 0x00, + 0x52, 0x00, 0x4f, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x00, 0x40, 0xaf, 0x00, + 0xff, 0x00, 0xff, 0xb7, 0x00, 0x02, 0x00, 0xb0, 0x05, 0x80, 0xb1, 0xf0, + 0xc0, 0x00, 0x00, 0x01, 0x5e, 0xf0, 0x39, 0xf0, 0x89, 0xf0, 0x00, 0x20, + 0xff, 0x7f, 0x7d, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x7c, 0x00, 0xff, 0xfb, + 0x52, 0xf0, 0x56, 0xf0, 0x33, 0x09, 0x33, 0x07, 0x00, 0x08, 0x90, 0x01, + 0x00, 0xf8, 0x67, 0x00, 0x4c, 0x04, 0xa0, 0x00, 0xe8, 0x03, 0x81, 0x00, + 0x82, 0x00, 0x6a, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0xeb, 0x07, 0xae, 0x07, + 0x72, 0x00, 0x6f, 0x00, 0xa1, 0x01, 0x1e, 0x05, 0x47, 0xfd, 0x73, 0x00, + 0x77, 0x00, 0x79, 0x00, 0x76, 0x00, 0xcc, 0x00, 0x30, 0x50, 0x50, 0x40, + 0x00, 0x18, 0x50, 0x40, 0x56, 0x25, 0x47, 0x25, 0x00, 0x18, 0x2e, 0x00, + 0x41, 0x40, 0xa7, 0x02, 0x09, 0x18, 0xc6, 0x00, 0xfb, 0x7f, 0x00, 0x30, + 0x49, 0x52, 0x05, 0x30, 0x05, 0x2c, 0x17, 0x03, 0x1e, 0xbd, 0xd2, 0xba, + 0x92, 0xb8, 0x6a, 0x0b, 0x61, 0x0e, 0xf9, 0x2f, 0x61, 0x1a, 0x01, 0x2f, + 0x5d, 0x0e, 0xf5, 0x2f, 0xd4, 0x7f, 0x02, 0x30, 0x1f, 0x2c, 0xe3, 0x7f, + 0x85, 0x01, 0xd1, 0x03, 0x7c, 0x0e, 0x03, 0x2f, 0x7c, 0x1a, 0x0f, 0x2f, + 0x73, 0x0f, 0x0d, 0x2f, 0xe3, 0x6f, 0xde, 0x04, 0x5f, 0xba, 0x11, 0xbf, + 0xb4, 0x0b, 0xd4, 0x6f, 0x27, 0x07, 0xb3, 0x25, 0xd1, 0xbf, 0xeb, 0x7f, + 0x07, 0x00, 0xb4, 0x25, 0x96, 0x02, 0xdb, 0x7f, 0x2f, 0xbf, 0x9e, 0xbf, + 0x01, 0xb8, 0xd2, 0xba, 0x21, 0xb9, 0x92, 0xb8, 0x06, 0x0a, 0x6f, 0x0b, + 0x40, 0x90, 0xdf, 0x2f, 0x40, 0x91, 0xdd, 0x2f, 0xfb, 0x6f, 0xd0, 0x5f, + 0xb8, 0x2e, 0x57, 0x50, 0x41, 0x30, 0x02, 0x40, 0x51, 0x0a, 0x01, 0x42, + 0x18, 0x82, 0x4b, 0x50, 0x60, 0x42, 0x70, 0x3c, 0x4d, 0x54, 0x42, 0x42, + 0x69, 0x82, 0x82, 0x32, 0x43, 0x40, 0x18, 0x08, 0x02, 0x0a, 0x40, 0x42, + 0x42, 0x80, 0x02, 0x3f, 0x01, 0x40, 0x10, 0x50, 0x4a, 0x08, 0xfb, 0x7f, + 0x11, 0x42, 0x0b, 0x31, 0x0b, 0x42, 0x3e, 0x80, 0x01, 0x32, 0x01, 0x42, + 0x00, 0x2e, 0x01, 0x2e, 0x40, 0xf0, 0x13, 0x90, 0x20, 0x2f, 0x03, 0x30, + 0x51, 0x50, 0x4f, 0x54, 0xf4, 0x34, 0x06, 0x30, 0x55, 0x52, 0x55, 0x32, + 0x1d, 0x1a, 0xe3, 0x22, 0x18, 0x1a, 0x53, 0x58, 0xe3, 0x22, 0x04, 0x30, + 0xd5, 0x40, 0xb5, 0x0d, 0xe1, 0xbe, 0x6f, 0xbb, 0x80, 0x91, 0xa9, 0x0d, + 0x01, 0x89, 0xb5, 0x23, 0x10, 0xa1, 0xf7, 0x2f, 0xda, 0x0e, 0xf4, 0x34, + 0xeb, 0x2f, 0x01, 0x2e, 0x25, 0x00, 0x70, 0x1a, 0x00, 0x30, 0x21, 0x30, + 0x02, 0x2c, 0x08, 0x22, 0x30, 0x30, 0x00, 0xb2, 0x06, 0x2f, 0x21, 0x2e, + 0x59, 0xf0, 0x98, 0x2e, 0xd8, 0x00, 0x00, 0x2e, 0x00, 0x2e, 0xd0, 0x2e, + 0xfb, 0x6f, 0xf0, 0x5f, 0xb8, 0x2e, 0x01, 0x2e, 0xb1, 0xf0, 0x59, 0x52, + 0x01, 0x0a, 0x21, 0x2e, 0xb1, 0xf0, 0x01, 0x2e, 0x1c, 0x01, 0x0f, 0xbc, + 0x0f, 0xb8, 0x00, 0x90, 0x45, 0x50, 0x02, 0x2f, 0xc0, 0x2e, 0x21, 0x2e, + 0xbc, 0xf0, 0xc0, 0x2e, 0x21, 0x2e, 0xba, 0xf0, 0x1a, 0x24, 0x26, 0x00, + 0x80, 0x2e, 0x8f, 0x00, 0x03, 0x2e, 0x01, 0x01, 0x05, 0x2e, 0x01, 0x01, + 0x92, 0xbd, 0x20, 0x50, 0x03, 0x2e, 0x01, 0x01, 0xbf, 0xba, 0x21, 0xbd, + 0x2f, 0xbb, 0x1f, 0xba, 0x40, 0x91, 0xf0, 0x7f, 0x04, 0x2f, 0x80, 0x91, + 0x02, 0x2f, 0x00, 0xb3, 0x90, 0x2e, 0xc7, 0xb0, 0x03, 0x2e, 0x7b, 0x00, + 0x01, 0x80, 0x40, 0x90, 0x14, 0x2f, 0x41, 0x84, 0xf1, 0x6f, 0x25, 0x2e, + 0x7b, 0x00, 0x41, 0x40, 0x23, 0x2e, 0x5a, 0x00, 0x47, 0x52, 0x12, 0x40, + 0x52, 0x42, 0x02, 0x30, 0x00, 0x40, 0x40, 0x42, 0xe0, 0x5f, 0x25, 0x2e, + 0x57, 0x00, 0x25, 0x2e, 0x58, 0x00, 0x25, 0x2e, 0x5d, 0x00, 0xb8, 0x2e, + 0x07, 0x2e, 0x00, 0x01, 0x03, 0x2e, 0x01, 0x01, 0x05, 0x2e, 0x00, 0x01, + 0x24, 0xbd, 0x0f, 0x2e, 0x59, 0x00, 0xb5, 0xbd, 0x93, 0xbc, 0x2f, 0xb9, + 0xb5, 0xb9, 0x93, 0xb8, 0x3a, 0x1a, 0x06, 0x2f, 0x07, 0x30, 0x25, 0x2e, + 0x59, 0x00, 0x2f, 0x2e, 0x57, 0x00, 0x2f, 0x2e, 0x58, 0x00, 0x40, 0xb3, + 0x05, 0x30, 0x07, 0x30, 0x0a, 0x2f, 0xf7, 0x6f, 0xe6, 0x7f, 0x00, 0x2e, + 0xc6, 0x41, 0x0f, 0x2e, 0x5a, 0x00, 0xb7, 0x05, 0x80, 0xa9, 0xee, 0x05, + 0xf7, 0x23, 0xe6, 0x6f, 0x80, 0xb3, 0x06, 0x30, 0x09, 0x2f, 0xe7, 0x7f, + 0x00, 0x2e, 0x06, 0x40, 0x0f, 0x2e, 0x5b, 0x00, 0xb7, 0x05, 0x80, 0xa9, + 0xee, 0x05, 0xb7, 0x23, 0xe7, 0x6f, 0x00, 0xb3, 0x04, 0x30, 0x0b, 0x2f, + 0xf4, 0x6f, 0x02, 0x89, 0xe7, 0x7f, 0x00, 0x2e, 0x04, 0x41, 0x0f, 0x2e, + 0x5c, 0x00, 0x27, 0x05, 0x00, 0xa9, 0xec, 0x05, 0x27, 0x23, 0xe7, 0x6f, + 0x7b, 0x0f, 0x17, 0x30, 0x0b, 0x2f, 0x73, 0x0f, 0x05, 0x30, 0x17, 0x30, + 0x07, 0x2f, 0x63, 0x0f, 0x15, 0x30, 0x17, 0x30, 0x00, 0x2f, 0x07, 0x30, + 0xe3, 0x0e, 0x00, 0x2f, 0x05, 0x30, 0x80, 0x90, 0x05, 0x2e, 0x57, 0x00, + 0x13, 0x30, 0x13, 0x29, 0xf2, 0x6f, 0x47, 0x5c, 0x17, 0x2f, 0xc0, 0x91, + 0x05, 0x30, 0x0b, 0x2f, 0x07, 0x2e, 0x58, 0x00, 0xc1, 0x86, 0x2b, 0x2e, + 0x57, 0x00, 0x59, 0x0e, 0x27, 0x2e, 0x58, 0x00, 0x24, 0x2f, 0x2b, 0x2e, + 0x5d, 0x00, 0x22, 0x2d, 0x61, 0x0e, 0x29, 0x2e, 0x57, 0x00, 0x2b, 0x2e, + 0x58, 0x00, 0x1b, 0x2f, 0x27, 0x2e, 0x5d, 0x00, 0x19, 0x2d, 0x40, 0x91, + 0x05, 0x2f, 0x01, 0x30, 0x23, 0x2e, 0x57, 0x00, 0x23, 0x2e, 0x5d, 0x00, + 0x06, 0x2d, 0x29, 0x2e, 0x57, 0x00, 0x61, 0x0e, 0x01, 0x2f, 0x27, 0x2e, + 0x5d, 0x00, 0x81, 0x40, 0x23, 0x2e, 0x5a, 0x00, 0x30, 0x25, 0x47, 0x52, + 0xd4, 0x40, 0x54, 0x42, 0x00, 0x2e, 0xc3, 0x40, 0x43, 0x42, 0x00, 0x2e, + 0x03, 0x2e, 0x5d, 0x00, 0x40, 0xb2, 0x0d, 0x2f, 0x81, 0x40, 0x23, 0x2e, + 0x5a, 0x00, 0x11, 0x40, 0x91, 0x43, 0x01, 0x34, 0x00, 0x40, 0x80, 0x43, + 0x23, 0x2e, 0x5e, 0xf0, 0x03, 0x2d, 0x00, 0x30, 0x21, 0x2e, 0x7b, 0x00, + 0xe0, 0x5f, 0xb8, 0x2e, 0x50, 0x50, 0xf0, 0x7f, 0x1a, 0x25, 0x13, 0x40, + 0x7b, 0x84, 0xe0, 0x7f, 0x83, 0x42, 0x35, 0x30, 0x11, 0x40, 0x04, 0x40, + 0xc1, 0x7f, 0xd4, 0x7f, 0x86, 0x31, 0x07, 0x2e, 0x59, 0xf0, 0x03, 0x2e, + 0x1f, 0x01, 0x0d, 0x09, 0x02, 0xab, 0x05, 0x30, 0x8e, 0x09, 0x2c, 0x23, + 0xe3, 0xba, 0x42, 0xab, 0x16, 0x30, 0x75, 0x23, 0x59, 0x5c, 0x8e, 0x09, + 0x66, 0xbb, 0x82, 0xab, 0x27, 0x30, 0xbe, 0x23, 0x3e, 0x80, 0x25, 0x1a, + 0x06, 0x2f, 0x2e, 0x1a, 0x04, 0x2f, 0x26, 0x1a, 0x02, 0x2f, 0xf7, 0x3d, + 0x03, 0x2c, 0xdf, 0x08, 0x07, 0x32, 0xdf, 0x0a, 0x14, 0x01, 0x55, 0x01, + 0x04, 0x41, 0x14, 0x42, 0x16, 0x01, 0x42, 0x41, 0x45, 0x30, 0x4d, 0x09, + 0x04, 0x41, 0x12, 0x42, 0x04, 0x42, 0x40, 0xb3, 0x04, 0x2f, 0xf0, 0x6f, + 0x02, 0x30, 0x04, 0x40, 0x94, 0x04, 0x02, 0x42, 0x00, 0x32, 0x08, 0x08, + 0x00, 0xb2, 0x00, 0x30, 0x05, 0x2f, 0xe2, 0x6f, 0x00, 0x2e, 0x84, 0x40, + 0x04, 0x05, 0x84, 0x42, 0x00, 0x2e, 0x5b, 0x54, 0x4a, 0x08, 0x40, 0xb2, + 0xf1, 0x6f, 0x04, 0x2f, 0x42, 0x82, 0x00, 0x2e, 0x42, 0x40, 0x02, 0x04, + 0x40, 0x42, 0xb0, 0x5f, 0x27, 0x2e, 0x59, 0xf0, 0xb8, 0x2e, 0x50, 0x50, + 0xf7, 0x7f, 0x00, 0x2e, 0x0f, 0x2e, 0xb8, 0xf0, 0xf8, 0xbf, 0xff, 0xbb, + 0xc0, 0xb3, 0x2a, 0x2f, 0x0f, 0x2e, 0x01, 0xf0, 0xfe, 0xbf, 0xe6, 0x7f, + 0x7e, 0xbb, 0xd5, 0x7f, 0x37, 0x30, 0x5f, 0x5a, 0xbe, 0x05, 0x67, 0x41, + 0xc4, 0x7f, 0x78, 0xbe, 0x47, 0x41, 0x27, 0x0b, 0xb3, 0x7f, 0xe6, 0x11, + 0x41, 0x56, 0x43, 0x89, 0xd7, 0x42, 0x00, 0x2e, 0x27, 0x41, 0x05, 0x41, + 0xf8, 0xbf, 0x7d, 0x0b, 0x6e, 0x11, 0x03, 0x8f, 0xd5, 0x42, 0x14, 0x30, + 0xe5, 0x41, 0xc7, 0x41, 0xd8, 0xbe, 0x6f, 0x0b, 0x6e, 0x11, 0xc5, 0x42, + 0x29, 0x2e, 0x56, 0x00, 0x45, 0x56, 0x27, 0x2e, 0xb8, 0xf0, 0xe6, 0x6f, + 0xd5, 0x6f, 0xc4, 0x6f, 0xb3, 0x6f, 0xf7, 0x6f, 0xb0, 0x5f, 0xc8, 0x2e, + 0x50, 0x50, 0xe5, 0x7f, 0xd7, 0x7f, 0xf6, 0x7f, 0x36, 0x30, 0x0b, 0x2e, + 0x01, 0xf0, 0xde, 0xbe, 0xde, 0xbb, 0x61, 0x5a, 0xb7, 0x05, 0x67, 0x41, + 0xc4, 0x7f, 0x78, 0xbe, 0x47, 0x41, 0x27, 0x0b, 0xb3, 0x7f, 0xe6, 0x11, + 0x43, 0x56, 0x43, 0x89, 0xd7, 0x42, 0x00, 0x2e, 0x27, 0x41, 0x05, 0x41, + 0xf8, 0xbf, 0x7d, 0x0b, 0x6e, 0x11, 0x03, 0x8f, 0xd5, 0x42, 0x14, 0x30, + 0xe5, 0x41, 0xc7, 0x41, 0xd8, 0xbe, 0x6f, 0x0b, 0x6e, 0x11, 0xc5, 0x42, + 0x29, 0x2e, 0x55, 0x00, 0x03, 0x31, 0x27, 0x2e, 0xb8, 0xf0, 0xf6, 0x6f, + 0xe5, 0x6f, 0xd7, 0x6f, 0xc4, 0x6f, 0xb3, 0x6f, 0xb0, 0x5f, 0xc8, 0x2e, + 0x40, 0x50, 0xf6, 0x7f, 0x1a, 0x18, 0x63, 0x56, 0x33, 0x00, 0x06, 0x30, + 0xfe, 0x03, 0x0e, 0xb8, 0xf2, 0xbf, 0x07, 0x0a, 0x2a, 0x18, 0x63, 0x5a, + 0xb5, 0x01, 0x03, 0x30, 0xfb, 0x03, 0x6e, 0xbb, 0xf2, 0xbf, 0xe1, 0x7f, + 0xf7, 0x0b, 0x56, 0x40, 0x36, 0x25, 0x46, 0x40, 0x06, 0x28, 0xc7, 0x7f, + 0x22, 0x18, 0xd1, 0x7f, 0xb5, 0x00, 0x01, 0x30, 0x39, 0x03, 0x2e, 0xb9, + 0x42, 0xbe, 0x14, 0x0b, 0xf2, 0x6f, 0x10, 0x18, 0xb5, 0x00, 0xb9, 0x03, + 0x2e, 0xb9, 0x62, 0xbf, 0x96, 0x0a, 0xb6, 0x6f, 0x30, 0x18, 0x75, 0x01, + 0xb9, 0x03, 0x5c, 0x28, 0xe2, 0xbf, 0xde, 0xb9, 0xd6, 0x6f, 0xdf, 0x0a, + 0x8a, 0x28, 0xc4, 0x6f, 0x82, 0x43, 0x23, 0x29, 0xe5, 0x6f, 0xc0, 0x2e, + 0x44, 0x43, 0xc0, 0x5f, 0x40, 0x50, 0xd0, 0x7f, 0x4a, 0x17, 0x00, 0x40, + 0x01, 0x18, 0x46, 0x25, 0x07, 0x25, 0x65, 0x56, 0xd9, 0x04, 0x53, 0x18, + 0xeb, 0x18, 0x05, 0x30, 0x49, 0x16, 0x69, 0x06, 0xca, 0x18, 0xa6, 0x00, + 0xc7, 0x02, 0x65, 0x58, 0xcb, 0x7f, 0x98, 0x2e, 0x7f, 0xb6, 0xcb, 0x6f, + 0xd2, 0x6f, 0xc0, 0x2e, 0x80, 0x42, 0xc0, 0x5f, 0x09, 0x2e, 0x1b, 0x01, + 0x05, 0x2e, 0x1b, 0x01, 0xa3, 0xbc, 0x44, 0xbe, 0x90, 0x50, 0x4f, 0xb9, + 0x07, 0x2e, 0x1b, 0x01, 0x4a, 0x25, 0x9f, 0xb8, 0x39, 0x8f, 0xb2, 0xbd, + 0xf2, 0x7f, 0xbf, 0xb9, 0xeb, 0x7f, 0x8a, 0x0a, 0x37, 0x89, 0x0b, 0x30, + 0x93, 0x0a, 0x8b, 0x7f, 0xcb, 0x43, 0x0b, 0x43, 0x80, 0xb2, 0xd3, 0x7f, + 0xc1, 0x7f, 0x90, 0x2e, 0x87, 0xb2, 0x20, 0x25, 0x01, 0x2e, 0x64, 0x00, + 0x01, 0x90, 0x0e, 0x2f, 0x67, 0x52, 0x01, 0x2e, 0x61, 0x00, 0xb4, 0x7f, + 0xa2, 0x7f, 0x98, 0x2e, 0x8d, 0xb2, 0x00, 0x30, 0x21, 0x2e, 0x64, 0x00, + 0xc1, 0x6f, 0xd3, 0x6f, 0xa2, 0x6f, 0xb4, 0x6f, 0x0b, 0x30, 0x01, 0x2e, + 0x1b, 0x01, 0x06, 0xbc, 0x06, 0xbb, 0x57, 0x25, 0x01, 0x2e, 0x1b, 0x01, + 0x94, 0xb1, 0x05, 0xbc, 0xb6, 0x7f, 0x0f, 0xbb, 0x6b, 0x50, 0x80, 0xb3, + 0x0f, 0x2f, 0x0d, 0x2e, 0x1b, 0x01, 0x6f, 0x5e, 0xb7, 0x09, 0x2d, 0x2e, + 0x1b, 0x01, 0x71, 0x5c, 0x69, 0x5e, 0x9b, 0x43, 0x9b, 0x43, 0xdb, 0x43, + 0x9b, 0x43, 0x1b, 0x42, 0xcb, 0x43, 0x0b, 0x42, 0x8b, 0x43, 0x40, 0xb2, + 0x05, 0x2f, 0x69, 0x50, 0x00, 0x2e, 0x16, 0x40, 0x0b, 0x40, 0x76, 0x7f, + 0x8b, 0x7f, 0xcb, 0x0a, 0x01, 0x2e, 0x61, 0x00, 0x67, 0x52, 0x6d, 0x5c, + 0x98, 0x2e, 0xd3, 0xb2, 0x90, 0x6f, 0x00, 0xb2, 0x0b, 0x2f, 0xf0, 0x6f, + 0x00, 0xb2, 0x08, 0x2f, 0x69, 0x58, 0x6b, 0x50, 0x12, 0x41, 0x12, 0x42, + 0x21, 0x30, 0x04, 0x41, 0x04, 0x42, 0x23, 0x2e, 0x5e, 0xf0, 0xc0, 0x6f, + 0x00, 0xb2, 0x26, 0x2f, 0x74, 0x6f, 0x80, 0x6f, 0x71, 0x54, 0x88, 0xbd, + 0xc8, 0xb8, 0x4b, 0x0a, 0x94, 0x42, 0x91, 0x42, 0x90, 0x42, 0x88, 0xba, + 0x69, 0x52, 0xf3, 0x6f, 0x54, 0x42, 0x85, 0x42, 0xc0, 0x90, 0x40, 0x42, + 0x15, 0x2f, 0x6b, 0x52, 0x00, 0x2e, 0x52, 0x40, 0x41, 0x40, 0xa2, 0x04, + 0x41, 0x06, 0x40, 0xaa, 0x04, 0x2f, 0x40, 0x90, 0x0b, 0x2f, 0xb1, 0x6f, + 0x4a, 0x0f, 0x08, 0x2f, 0xb2, 0x6f, 0x80, 0xb2, 0x05, 0x2f, 0x6b, 0x54, + 0x21, 0x30, 0x94, 0x42, 0x80, 0x42, 0x23, 0x2e, 0x5e, 0xf0, 0xd0, 0x6f, + 0x00, 0xb2, 0x13, 0x2f, 0x01, 0x2e, 0x60, 0x00, 0x09, 0x2e, 0x7c, 0x00, + 0x04, 0x1a, 0x0d, 0x2f, 0x73, 0x50, 0x29, 0x2e, 0x60, 0x00, 0x24, 0x42, + 0x44, 0x30, 0x02, 0x40, 0x02, 0x42, 0x09, 0x80, 0x00, 0x2e, 0x04, 0x42, + 0x03, 0x2d, 0x10, 0x30, 0x21, 0x2e, 0x64, 0x00, 0xeb, 0x6f, 0x70, 0x5f, + 0xb8, 0x2e, 0x09, 0x86, 0x49, 0x54, 0xe4, 0x40, 0xc3, 0x80, 0x94, 0x04, + 0xc3, 0x40, 0x13, 0x05, 0x05, 0x40, 0x25, 0x05, 0x8a, 0x17, 0x73, 0x30, + 0x73, 0x09, 0x8c, 0x17, 0xf3, 0x08, 0xe3, 0x00, 0x4c, 0x82, 0x95, 0x00, + 0xb3, 0xb5, 0x23, 0xb5, 0x53, 0x42, 0x52, 0x42, 0x53, 0x42, 0x42, 0x42, + 0x71, 0x82, 0x75, 0x54, 0x52, 0x42, 0x10, 0x50, 0x77, 0x54, 0x52, 0x42, + 0xfb, 0x7f, 0x22, 0x30, 0x79, 0x56, 0x43, 0x42, 0x44, 0x82, 0x0b, 0x30, + 0x52, 0x42, 0x5b, 0x42, 0x7c, 0x84, 0x4b, 0x42, 0x35, 0x82, 0x8c, 0x80, + 0x8b, 0x42, 0x0b, 0x42, 0x39, 0x80, 0x04, 0x30, 0x0b, 0x42, 0x37, 0x80, + 0x15, 0x30, 0x60, 0x25, 0x98, 0x2e, 0xc6, 0xb2, 0x8b, 0x83, 0xfb, 0x6f, + 0x65, 0x42, 0xc0, 0x2e, 0x44, 0x42, 0xf0, 0x5f, 0x05, 0x80, 0x02, 0x30, + 0x51, 0x82, 0x02, 0x42, 0x13, 0x30, 0x41, 0x40, 0x4b, 0x08, 0x7b, 0x54, + 0x3e, 0x80, 0x51, 0x14, 0xc0, 0x2e, 0x01, 0x42, 0x00, 0x2e, 0x40, 0x51, + 0xd1, 0x7f, 0x12, 0x25, 0x02, 0x30, 0x42, 0x43, 0x32, 0x30, 0x82, 0x43, + 0xc6, 0x7f, 0xe5, 0x7f, 0xb4, 0x7f, 0xa3, 0x7f, 0x90, 0x7f, 0x8b, 0x7f, + 0x98, 0x2e, 0x54, 0x01, 0xc0, 0x7e, 0x00, 0xac, 0x01, 0x2f, 0x65, 0x50, + 0xc0, 0x7e, 0x00, 0x2e, 0x90, 0x6f, 0x09, 0x8a, 0xd1, 0x6f, 0x75, 0x7f, + 0x4c, 0x82, 0x63, 0x41, 0x65, 0x7f, 0x11, 0x7f, 0x00, 0x2e, 0x64, 0x41, + 0x44, 0x85, 0x52, 0x7f, 0x45, 0x7f, 0x00, 0x2e, 0xa6, 0x40, 0x80, 0x40, + 0x32, 0x7f, 0x82, 0x8e, 0xc2, 0x6e, 0x45, 0x41, 0xf0, 0x7f, 0x27, 0x7f, + 0x02, 0x7f, 0x98, 0x2e, 0x8a, 0xb1, 0x23, 0x6f, 0xd1, 0x6f, 0xc2, 0x40, + 0xf9, 0x86, 0x23, 0x7f, 0x80, 0xb2, 0xe0, 0x7e, 0x0f, 0x2f, 0x32, 0x6f, + 0x64, 0x6f, 0x82, 0x40, 0xf2, 0x7f, 0x4e, 0x82, 0x42, 0x6f, 0x50, 0x6f, + 0x73, 0x6f, 0x85, 0x40, 0xc3, 0x40, 0x04, 0x41, 0x06, 0x40, 0xe2, 0x6e, + 0x98, 0x2e, 0x8a, 0xb1, 0xe0, 0x7e, 0xf3, 0x31, 0x10, 0x6f, 0x36, 0x80, + 0xe1, 0x6e, 0x02, 0x40, 0x71, 0x7f, 0x51, 0x04, 0x02, 0x30, 0x40, 0xa8, + 0x91, 0x04, 0x4a, 0x22, 0x89, 0x16, 0x93, 0x08, 0x4a, 0x00, 0x95, 0xb4, + 0x09, 0x18, 0x8e, 0x16, 0x13, 0x30, 0x93, 0x08, 0x21, 0x6f, 0x60, 0x7f, + 0x4d, 0x86, 0x02, 0x80, 0xb2, 0x00, 0x41, 0x40, 0x21, 0xb5, 0x50, 0x7f, + 0x43, 0x7f, 0x98, 0x2e, 0xc2, 0xb1, 0x40, 0x6f, 0x62, 0x6f, 0x55, 0x6f, + 0x13, 0x40, 0x84, 0x40, 0x01, 0x40, 0x45, 0x41, 0x42, 0xbe, 0x1d, 0x18, + 0x4c, 0x04, 0x31, 0x0f, 0x04, 0x8a, 0xc0, 0x6f, 0x11, 0x30, 0x02, 0x2f, + 0x00, 0x2e, 0x03, 0x2c, 0x01, 0x42, 0x23, 0x30, 0x03, 0x42, 0x00, 0x2e, + 0xd6, 0x6f, 0x44, 0x41, 0x8a, 0x87, 0x76, 0x8b, 0x00, 0xb3, 0x53, 0x7f, + 0x15, 0x2f, 0x04, 0x6f, 0x7d, 0x5e, 0x8b, 0x8d, 0xe7, 0x01, 0xc0, 0xa5, + 0x84, 0x41, 0x01, 0x2f, 0x00, 0xa1, 0x03, 0x2f, 0xc0, 0xad, 0x08, 0x2f, + 0x00, 0xa5, 0x06, 0x2f, 0xc6, 0x40, 0x81, 0x8d, 0x07, 0x30, 0x3c, 0x05, + 0xd6, 0x42, 0x04, 0x2c, 0xc4, 0x42, 0x02, 0x2c, 0x07, 0x30, 0x07, 0x30, + 0x86, 0x86, 0x94, 0x6f, 0xd7, 0x7e, 0x0e, 0x8d, 0x00, 0x40, 0x74, 0x89, + 0xc7, 0x40, 0x02, 0xb2, 0xf9, 0x29, 0x45, 0x41, 0x86, 0x41, 0xbe, 0x80, + 0x21, 0x41, 0x75, 0x23, 0x82, 0x40, 0xc7, 0x42, 0x45, 0x7f, 0x34, 0x7f, + 0x20, 0x7f, 0x98, 0x2e, 0xc2, 0xb1, 0x31, 0x6f, 0x60, 0x6f, 0x24, 0x6f, + 0x22, 0x40, 0x05, 0x41, 0x43, 0x40, 0x13, 0x01, 0x43, 0x86, 0xac, 0x0f, + 0xd1, 0x6f, 0x30, 0x7f, 0x00, 0x2f, 0x44, 0x42, 0x48, 0x8a, 0x41, 0x88, + 0xe1, 0x40, 0x13, 0x7f, 0x04, 0x7f, 0xf5, 0x7e, 0x98, 0x2e, 0xc2, 0xb1, + 0x11, 0x6f, 0x60, 0x6f, 0x34, 0x6f, 0x42, 0x40, 0x03, 0x40, 0x9a, 0x04, + 0x04, 0x41, 0x43, 0x82, 0xa2, 0x0e, 0x03, 0x6f, 0x00, 0x2f, 0xc2, 0x42, + 0x00, 0x2e, 0x41, 0x40, 0x72, 0x6f, 0x98, 0x2e, 0xc2, 0xb1, 0x25, 0x6f, + 0x72, 0x6f, 0x53, 0x41, 0x93, 0x0e, 0xd1, 0x6f, 0x46, 0x80, 0x1b, 0x30, + 0x03, 0x30, 0x0c, 0x2f, 0x04, 0x40, 0x00, 0x91, 0x42, 0x42, 0x08, 0x2f, + 0xf6, 0x6e, 0x44, 0x6f, 0x86, 0x41, 0xb4, 0x0e, 0x03, 0x2f, 0x02, 0x88, + 0xdb, 0x7e, 0x03, 0x43, 0x0b, 0x42, 0x46, 0x8d, 0x44, 0x41, 0x47, 0x80, + 0x05, 0x6f, 0x94, 0x0f, 0x76, 0x7f, 0x60, 0x7f, 0x02, 0x2f, 0x45, 0x89, + 0x42, 0x43, 0x03, 0x43, 0x49, 0x88, 0xa5, 0x6f, 0x40, 0x91, 0xa4, 0x7f, + 0x15, 0x30, 0xe2, 0x6f, 0xd3, 0x6e, 0x03, 0x2f, 0x04, 0x30, 0x83, 0x42, + 0x80, 0x2e, 0x77, 0xb4, 0x04, 0x40, 0x25, 0x29, 0x04, 0x42, 0x83, 0x42, + 0x45, 0x82, 0x94, 0x6f, 0x04, 0x85, 0xc0, 0xb2, 0x90, 0x2e, 0x63, 0xb4, + 0x15, 0x87, 0x3c, 0x8c, 0xc4, 0x40, 0x46, 0x7f, 0xc2, 0x86, 0x07, 0x40, + 0x86, 0x41, 0xf4, 0xbf, 0x00, 0xb3, 0x0c, 0x2f, 0x90, 0x6f, 0x16, 0x80, + 0x46, 0x25, 0x00, 0x40, 0x57, 0x25, 0x04, 0x18, 0xae, 0x0e, 0x10, 0x30, + 0x06, 0x30, 0x75, 0x25, 0x46, 0x23, 0x60, 0x6f, 0x64, 0x25, 0xc4, 0x40, + 0xfa, 0x86, 0x00, 0xb3, 0x33, 0x7f, 0x09, 0x2f, 0x93, 0x6f, 0xd8, 0x88, + 0x53, 0x6f, 0x04, 0x41, 0xc3, 0x40, 0xdc, 0x0e, 0x13, 0x30, 0x04, 0x30, + 0xdc, 0x22, 0xb3, 0x25, 0x40, 0xb3, 0x02, 0x2f, 0x3b, 0x25, 0xc0, 0x90, + 0x05, 0x2f, 0x91, 0x6f, 0xd0, 0x6f, 0x98, 0x2e, 0xc6, 0xb2, 0x4d, 0x2c, + 0x04, 0x30, 0x8d, 0x88, 0x43, 0x40, 0x82, 0x40, 0x54, 0x7f, 0xda, 0x0f, + 0x04, 0x30, 0x08, 0x2f, 0xc1, 0x80, 0x40, 0x42, 0xc2, 0x0f, 0x02, 0x2f, + 0x00, 0x30, 0xc0, 0x7e, 0x1b, 0x2d, 0xc0, 0x7e, 0x19, 0x2d, 0xe1, 0xbc, + 0x92, 0x6f, 0x4f, 0x04, 0x90, 0x84, 0x40, 0xa8, 0x21, 0x05, 0x83, 0x40, + 0x4c, 0x22, 0x4b, 0x0e, 0xb6, 0x84, 0x21, 0x30, 0x02, 0x2f, 0x11, 0x30, + 0x04, 0x2c, 0xc1, 0x7e, 0xe3, 0x6f, 0xc1, 0x7e, 0xc1, 0x42, 0x00, 0x2e, + 0x00, 0x40, 0x81, 0x40, 0x04, 0xbd, 0x40, 0x6f, 0x98, 0x2e, 0xc2, 0xb1, + 0x50, 0x6f, 0x11, 0x30, 0x02, 0x40, 0x51, 0x08, 0xc3, 0x6e, 0x03, 0x80, + 0x99, 0x15, 0x0b, 0x40, 0xb1, 0x6f, 0xd0, 0x6f, 0xb6, 0x7f, 0x5b, 0x7f, + 0x04, 0x30, 0x4d, 0x54, 0x03, 0x30, 0x11, 0x2c, 0x10, 0x80, 0x55, 0x6f, + 0x06, 0x40, 0x75, 0x01, 0x58, 0xbb, 0x6a, 0x09, 0x05, 0x42, 0xc1, 0x86, + 0x47, 0x40, 0x51, 0x25, 0xbe, 0x01, 0x56, 0x43, 0x00, 0x2e, 0x46, 0x41, + 0xf4, 0x03, 0xb6, 0x6f, 0x47, 0x43, 0x5e, 0x0e, 0xed, 0x2f, 0x31, 0x6f, + 0x60, 0x6f, 0x42, 0x40, 0x15, 0x30, 0x02, 0x82, 0x95, 0x08, 0x04, 0x42, + 0x52, 0x42, 0x02, 0x2c, 0x44, 0x42, 0x04, 0x30, 0x3e, 0x8e, 0x91, 0x6f, + 0x4f, 0x8c, 0x02, 0x40, 0x83, 0x41, 0xb5, 0x8d, 0x93, 0x0e, 0xd0, 0x6f, + 0x01, 0x2f, 0x98, 0x2e, 0xc6, 0xb2, 0x00, 0x2e, 0xc0, 0x41, 0x81, 0x41, + 0xc1, 0x0f, 0xc0, 0x6f, 0x01, 0x2f, 0x04, 0x42, 0x00, 0x2e, 0x70, 0x6f, + 0x3c, 0x82, 0x00, 0x40, 0x41, 0x40, 0x89, 0x16, 0x95, 0x08, 0x4a, 0x00, + 0x04, 0xbc, 0x91, 0xb4, 0x01, 0x0e, 0xe0, 0x6f, 0x07, 0x2f, 0xa1, 0x6f, + 0x00, 0x2e, 0x41, 0x40, 0x40, 0xb2, 0x02, 0x2f, 0xa1, 0x6f, 0x05, 0x42, + 0x44, 0x42, 0x00, 0x2e, 0x8b, 0x6f, 0xc0, 0x5e, 0xb8, 0x2e, 0x03, 0x2e, + 0x1c, 0x01, 0x9c, 0xbc, 0x1d, 0xb9, 0x02, 0x82, 0x25, 0x2e, 0x8e, 0x00, + 0x83, 0x56, 0x13, 0x18, 0x01, 0x2e, 0x66, 0x00, 0x43, 0x40, 0xd8, 0x04, + 0x05, 0x2e, 0x65, 0x00, 0x40, 0x50, 0x27, 0x2e, 0x65, 0x00, 0xfb, 0x7f, + 0xda, 0x05, 0x8b, 0x50, 0x4b, 0x40, 0x02, 0x40, 0x81, 0x82, 0x01, 0x42, + 0x03, 0x80, 0x81, 0x52, 0xb1, 0x00, 0x03, 0x40, 0x3b, 0x82, 0x85, 0x58, + 0x14, 0x01, 0xc0, 0xb2, 0x37, 0x2e, 0x66, 0x00, 0xd1, 0x7f, 0xe2, 0x7f, + 0x04, 0x2f, 0x05, 0x2e, 0x6b, 0x00, 0x81, 0x84, 0x25, 0x2e, 0x6b, 0x00, + 0x62, 0x40, 0x3a, 0x0f, 0x45, 0x40, 0xc1, 0x7f, 0x21, 0x30, 0x12, 0x30, + 0x42, 0x2f, 0x0d, 0x2e, 0x69, 0x00, 0x3e, 0x0e, 0x33, 0x2f, 0x05, 0x2e, + 0x6a, 0x00, 0x01, 0x35, 0x91, 0x0e, 0x01, 0x30, 0x03, 0x2f, 0x09, 0x2e, + 0x6e, 0x00, 0x00, 0xb3, 0x24, 0x2f, 0xc0, 0x35, 0x90, 0x0e, 0x39, 0x2f, + 0x8f, 0x50, 0x02, 0x30, 0x01, 0x40, 0x7f, 0x82, 0x43, 0xa2, 0x02, 0x2f, + 0x00, 0x2e, 0x0c, 0x2c, 0x01, 0x30, 0xc0, 0xb2, 0x11, 0x30, 0x02, 0x2f, + 0x25, 0x2e, 0x6d, 0x00, 0x03, 0x2d, 0x23, 0x2e, 0x6d, 0x00, 0x21, 0x30, + 0x25, 0x2e, 0x6b, 0x00, 0x42, 0xb2, 0x04, 0x2f, 0x41, 0xb2, 0x02, 0x2f, + 0x25, 0x2e, 0x6d, 0x00, 0x31, 0x30, 0x3e, 0x80, 0x04, 0x86, 0x25, 0x2e, + 0x6c, 0x00, 0x02, 0x42, 0xc2, 0x42, 0x18, 0x2d, 0x02, 0x35, 0x01, 0x42, + 0x25, 0x2e, 0x6a, 0x00, 0x13, 0x2d, 0x2c, 0x04, 0x38, 0x1e, 0x21, 0x2e, + 0x69, 0x00, 0x7f, 0x50, 0x11, 0x30, 0x22, 0x30, 0x98, 0x2e, 0x66, 0xb5, + 0x09, 0x2c, 0x01, 0x30, 0x2c, 0x00, 0x38, 0x1c, 0x21, 0x2e, 0x68, 0x00, + 0x7f, 0x50, 0x98, 0x2e, 0x66, 0xb5, 0x01, 0x30, 0xc0, 0x6f, 0xd4, 0xb1, + 0xf5, 0xbd, 0x6b, 0xba, 0x91, 0x5a, 0x02, 0x40, 0x15, 0x18, 0xf5, 0xbe, + 0xeb, 0xbb, 0xe3, 0x0a, 0x3d, 0x0b, 0xd2, 0x6f, 0xe3, 0x00, 0x84, 0x40, + 0x63, 0x05, 0x93, 0x58, 0x2c, 0x18, 0xf5, 0xbe, 0x03, 0x42, 0xeb, 0xbb, + 0xfd, 0x0b, 0xe0, 0x6f, 0x58, 0x01, 0xdf, 0x01, 0x7d, 0x1f, 0x95, 0x42, + 0x18, 0x04, 0x85, 0x40, 0x5d, 0x05, 0x2c, 0x18, 0x75, 0xbe, 0xeb, 0xba, + 0x2c, 0x0b, 0xdc, 0x04, 0x18, 0x1c, 0x80, 0x42, 0x84, 0x80, 0x02, 0x30, + 0x00, 0x40, 0x00, 0xb2, 0x0c, 0x2f, 0x01, 0x2e, 0x6b, 0x00, 0x03, 0x35, + 0x83, 0x0e, 0x07, 0x2f, 0x8d, 0x50, 0x3e, 0x80, 0x25, 0x2e, 0x6d, 0x00, + 0x02, 0x42, 0x03, 0x80, 0x00, 0x2e, 0x02, 0x42, 0x40, 0xb2, 0x04, 0x2f, + 0x8b, 0x50, 0x04, 0x80, 0x25, 0x2e, 0x6a, 0x00, 0x02, 0x42, 0x42, 0xb2, + 0x89, 0x56, 0x9a, 0x22, 0x41, 0xb2, 0x01, 0x2e, 0x1c, 0x01, 0x87, 0x52, + 0x0b, 0xbc, 0x8a, 0x22, 0x0f, 0xb8, 0x00, 0x90, 0x01, 0x32, 0x06, 0x2f, + 0x10, 0x30, 0x90, 0x08, 0x80, 0xb2, 0x08, 0x2f, 0x23, 0x2e, 0x5e, 0xf0, + 0x06, 0x2d, 0x20, 0x30, 0x90, 0x08, 0x80, 0xb2, 0x01, 0x2f, 0x23, 0x2e, + 0x5e, 0xf0, 0xfb, 0x6f, 0xc0, 0x5f, 0xb8, 0x2e, 0x07, 0x86, 0xfc, 0x88, + 0xc6, 0x40, 0x05, 0x41, 0x31, 0x1a, 0x12, 0x2f, 0x80, 0x91, 0x22, 0x2f, + 0x01, 0x35, 0x29, 0x0f, 0x0a, 0x2f, 0x06, 0x80, 0x00, 0x2e, 0x00, 0x40, + 0x00, 0xb2, 0x01, 0x2f, 0x44, 0xa9, 0x03, 0x2f, 0x00, 0x30, 0xc0, 0x42, + 0x00, 0x43, 0xb8, 0x2e, 0xc2, 0x42, 0x01, 0x43, 0xb8, 0x2e, 0x01, 0x35, + 0xa9, 0x0e, 0x0e, 0x2f, 0x03, 0x3b, 0xeb, 0x00, 0xcc, 0xa8, 0x0a, 0x2f, + 0x05, 0x86, 0xc2, 0x80, 0xc3, 0x40, 0x02, 0x42, 0x3c, 0x84, 0xc1, 0x80, + 0x81, 0x42, 0x82, 0x84, 0xc0, 0x2e, 0x80, 0x42, 0x00, 0x2e, 0xb8, 0x2e, + 0x03, 0x2e, 0x1d, 0x01, 0x9f, 0xbc, 0x9f, 0xb8, 0x90, 0x50, 0x40, 0xb2, + 0x90, 0x2e, 0x71, 0xb6, 0x12, 0x40, 0x03, 0x30, 0x11, 0x40, 0x80, 0xa8, + 0x5a, 0x05, 0x9f, 0x58, 0x55, 0x23, 0x00, 0x40, 0x75, 0x7f, 0x40, 0xa8, + 0x16, 0x41, 0xd9, 0x05, 0xcf, 0x23, 0x56, 0x05, 0x40, 0xa9, 0x9d, 0x05, + 0x87, 0x7f, 0x6e, 0x23, 0x17, 0x41, 0xa5, 0x7f, 0x3e, 0x8b, 0x04, 0x41, + 0x52, 0x43, 0x00, 0xa8, 0x98, 0x05, 0xf2, 0x7f, 0x86, 0x22, 0xcf, 0x05, + 0xc0, 0xa9, 0x9f, 0x05, 0xbe, 0x23, 0x04, 0x05, 0x92, 0x7f, 0x00, 0xa9, + 0xdc, 0x05, 0x51, 0x43, 0xb6, 0x7f, 0x27, 0x23, 0xa7, 0x54, 0xe1, 0x7f, + 0x02, 0x18, 0x7d, 0x83, 0x40, 0x43, 0xeb, 0xba, 0x75, 0xbd, 0xaa, 0x0a, + 0x0b, 0x2e, 0x71, 0x00, 0x77, 0x5c, 0x2e, 0x18, 0xf5, 0xbe, 0x6b, 0xbb, + 0x75, 0x0b, 0xaa, 0x00, 0xc4, 0x7f, 0x25, 0x2e, 0x71, 0x00, 0xb2, 0x6f, + 0xa5, 0x6f, 0xaa, 0x00, 0x54, 0x01, 0x84, 0x6f, 0x72, 0x6f, 0x94, 0x05, + 0x80, 0xa9, 0xde, 0x05, 0xb7, 0x23, 0x99, 0x5e, 0x77, 0x0e, 0x41, 0x40, + 0x97, 0x5c, 0xb1, 0x01, 0xd5, 0x7f, 0x00, 0x2e, 0x85, 0x41, 0x0e, 0x2f, + 0x00, 0xa0, 0x0c, 0x2f, 0x14, 0x0f, 0x04, 0x2f, 0xe0, 0x6f, 0x00, 0xac, + 0x10, 0x30, 0x08, 0x2c, 0x18, 0x22, 0xf0, 0x6f, 0x00, 0xac, 0x30, 0x30, + 0x24, 0x30, 0x02, 0x2c, 0x20, 0x22, 0x40, 0x30, 0x0d, 0x2e, 0x71, 0x00, + 0x80, 0xa1, 0x1e, 0x23, 0x79, 0x5e, 0x37, 0x0f, 0xbc, 0x23, 0x00, 0x90, + 0x14, 0x30, 0x10, 0x30, 0x18, 0x2f, 0x9d, 0x50, 0x30, 0x00, 0x9b, 0x56, + 0x43, 0x0e, 0x02, 0x2f, 0x10, 0x30, 0x0a, 0x2c, 0x03, 0x30, 0x99, 0x50, + 0x10, 0x0e, 0x13, 0x30, 0x00, 0x2f, 0x03, 0x30, 0x90, 0x0f, 0x10, 0x30, + 0x00, 0x2f, 0x00, 0x30, 0x00, 0x90, 0x10, 0x30, 0x00, 0x2f, 0x00, 0x30, + 0xc0, 0x90, 0x13, 0x30, 0x00, 0x2f, 0x03, 0x30, 0x40, 0xb2, 0x87, 0x5c, + 0x22, 0x2f, 0x41, 0x90, 0x4a, 0x2f, 0xa5, 0x50, 0x00, 0x2e, 0x01, 0x40, + 0x41, 0x82, 0x01, 0x42, 0x02, 0x80, 0x4a, 0xa8, 0x01, 0x40, 0x06, 0x2f, + 0xd0, 0x6f, 0x85, 0x0e, 0x3e, 0x2f, 0x41, 0x80, 0x21, 0x2e, 0x78, 0x00, + 0x3b, 0x2d, 0x95, 0x50, 0xfb, 0x7f, 0x4a, 0xa8, 0x06, 0x2f, 0x98, 0x2e, + 0x73, 0xb6, 0xc0, 0x90, 0xfb, 0x6f, 0x32, 0x2f, 0x00, 0x2e, 0x30, 0x2d, + 0x98, 0x2e, 0x73, 0xb6, 0x29, 0x2e, 0x7a, 0x00, 0x2b, 0x2c, 0xfb, 0x6f, + 0xa1, 0x52, 0xd2, 0x6f, 0x95, 0x0e, 0x41, 0x40, 0x05, 0x2f, 0x00, 0x90, + 0x17, 0x2f, 0x05, 0x2e, 0x7a, 0x00, 0x80, 0x90, 0x13, 0x2f, 0x7f, 0x82, + 0x40, 0xac, 0x23, 0x2e, 0x77, 0x00, 0x01, 0x30, 0x18, 0x2f, 0xa1, 0x54, + 0x82, 0x84, 0x23, 0x2e, 0x77, 0x00, 0x82, 0x40, 0x80, 0xb2, 0x11, 0x2f, + 0x00, 0x90, 0x23, 0x2e, 0x79, 0x00, 0x0d, 0x2f, 0x29, 0x2e, 0x72, 0x00, + 0x0b, 0x2d, 0x41, 0x80, 0x21, 0x2e, 0x77, 0x00, 0x0f, 0xa4, 0x05, 0x2f, + 0xa3, 0x50, 0x3e, 0x80, 0xf1, 0x30, 0x29, 0x2e, 0x79, 0x00, 0x01, 0x42, + 0x06, 0x30, 0x34, 0x08, 0x00, 0xb2, 0x02, 0x2f, 0x80, 0x30, 0x21, 0x2e, + 0x5e, 0xf0, 0x70, 0x5f, 0xb8, 0x2e, 0x04, 0x84, 0x01, 0x30, 0x81, 0x42, + 0x82, 0x84, 0x01, 0x42, 0xa1, 0x42, 0x81, 0x42, 0x82, 0x84, 0x00, 0x2e, + 0x91, 0x42, 0x81, 0x42, 0xb8, 0x2e, 0x30, 0x50, 0xf3, 0x7f, 0xc0, 0xac, + 0xe4, 0x7f, 0xd5, 0x7f, 0x03, 0x2f, 0x00, 0x30, 0x82, 0x04, 0xf3, 0x6f, + 0xc3, 0x06, 0x40, 0xad, 0x05, 0x2f, 0xe0, 0x6f, 0x05, 0x30, 0x28, 0x04, + 0xd1, 0x6f, 0x69, 0x07, 0xe0, 0x7f, 0x40, 0xa1, 0x01, 0x30, 0x20, 0x2f, + 0x13, 0x25, 0x02, 0x25, 0x04, 0x32, 0x06, 0x30, 0x02, 0x30, 0x03, 0x30, + 0xaf, 0xbb, 0xb1, 0xbd, 0xdf, 0x0a, 0x9f, 0xbb, 0x21, 0xbd, 0x97, 0x0a, + 0x8f, 0xbb, 0x91, 0xbc, 0x01, 0xbc, 0x4f, 0x0a, 0x6b, 0x0e, 0x04, 0x2f, + 0x6b, 0x1a, 0x07, 0x2f, 0xe7, 0x6f, 0x7a, 0x0f, 0x04, 0x2f, 0xe7, 0x6f, + 0x97, 0x04, 0x17, 0x30, 0x07, 0x0a, 0xdd, 0x06, 0x81, 0x8d, 0x34, 0x0e, + 0xe6, 0x2f, 0x00, 0x2e, 0x0d, 0x2d, 0x6b, 0x0e, 0x00, 0x30, 0x05, 0x2f, + 0x6b, 0x1a, 0x07, 0x2f, 0xe0, 0x6f, 0x42, 0x0f, 0x00, 0x30, 0x03, 0x2f, + 0xe0, 0x6f, 0x90, 0x04, 0xdd, 0x06, 0x10, 0x30, 0xf5, 0x6f, 0xc3, 0x7f, + 0xb2, 0x7f, 0x40, 0xad, 0x06, 0x2f, 0x03, 0x30, 0xb2, 0x6f, 0x9a, 0x04, + 0xc4, 0x6f, 0xdc, 0x06, 0xb2, 0x7f, 0xc3, 0x7f, 0x00, 0x2e, 0xd2, 0x6f, + 0xaa, 0x0c, 0x80, 0xac, 0x02, 0x30, 0x01, 0x2f, 0x10, 0x04, 0x51, 0x06, + 0xd0, 0x5f, 0xb8, 0x2e, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, + 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00, 0x80, 0x2e, 0x18, 0x00 }; /***************************************************************************/ -/*! Static Function Declarations +/*! Static Function Declarations ****************************************************************************/ /*! - * @brief This API update the length for read and write. + * @brief This API update the length for read and write. * - * @param[in] len : Length for read and write - * @param[in] feature : Variable to specify the features - * which are to be set in the sensor. - * @param[in] enable : Variable which specifies whether to enable or - * disable the features in the bma455 sensor. - * enable | Macros - * ----------------|------------------- - * 0x01 | BMA4_EN - * 0x00 | BMA4_DIS - * @param[in] dev : Structure instance of bma4_dev. + * @param[in] len : Length for read and write + * @param[in] feature : Variable to specify the features + * which are to be set in the sensor. + * @param[in] enable : Variable which specifies whether to enable or + * disable the features in the bma455 sensor. + * enable | Macros + * ----------------|------------------- + * 0x01 | BMA4_EN + * 0x00 | BMA4_DIS + * @param[in] dev : Structure instance of bma4_dev. * - * @return none + * @return none */ static void update_len(uint8_t *len, uint8_t feature, uint8_t enable); /*! - * @brief This API enables the features of sensor. + * @brief This API enables the features of sensor. * - * @param[in] feature : Variable to specify the features - * which are to be set in the sensor. - * @param[in] len : length to read and write - * @param[in] feature_config : Array address which stores the feature - * configuration data - * @param[in] dev : Structure instance of bma4_dev. + * @param[in] feature : Variable to specify the features + * which are to be set in the sensor. + * @param[in] len : length to read and write + * @param[in] feature_config : Array address which stores the feature + * configuration data + * @param[in] dev : Structure instance of bma4_dev. * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any positive value mentioned in ERROR CODES -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any positive value mentioned in ERROR CODES -> Fail */ static uint16_t feature_enable(uint8_t feature, uint8_t len, uint8_t *feature_config, struct bma4_dev *dev); /*! - * @brief This API disables the features of sensor. + * @brief This API disables the features of sensor. * - * @param[in] feature : Variable to specify the features - * which are to be unset in the sensor. - * @param[in] len : length to read and write - * @param[in] feature_config : Array address which stores the feature - * configuration data - * @param[in] dev : Structure instance of bma4_dev. + * @param[in] feature : Variable to specify the features + * which are to be unset in the sensor. + * @param[in] len : length to read and write + * @param[in] feature_config : Array address which stores the feature + * configuration data + * @param[in] dev : Structure instance of bma4_dev. * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any positive value mentioned in ERROR CODES -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any positive value mentioned in ERROR CODES -> Fail */ static uint16_t feature_disable(uint8_t feature, uint8_t len, uint8_t *feature_config, struct bma4_dev *dev); @@ -667,7 +667,7 @@ static uint16_t feature_disable(uint8_t feature, uint8_t len, uint8_t *feature_c * @return none */ static void update_stepcounter_parameter(const struct bma423_stepcounter_settings *setting, - uint8_t index, uint8_t *feature_config); + uint8_t index, uint8_t *feature_config); /*! * @brief This API copy the settings of step counter into the * structure of bma423_stepcounter_settings, which is read from sensor. @@ -681,531 +681,531 @@ static void update_stepcounter_parameter(const struct bma423_stepcounter_setting static void extract_stepcounter_parameter(struct bma423_stepcounter_settings *setting, const uint16_t *data_p); /***************************************************************************/ -/**\name Function definitions +/**\name Function definitions ****************************************************************************/ /*! - * @brief This API is the entry point. - * Call this API before using all other APIs. - * This API reads the chip-id of the sensor and sets the resolution. + * @brief This API is the entry point. + * Call this API before using all other APIs. + * This API reads the chip-id of the sensor and sets the resolution. */ #include uint16_t bma423_init(struct bma4_dev *dev) { - uint16_t rslt; + uint16_t rslt; - rslt = bma4_init(dev); + rslt = bma4_init(dev); - if (rslt == BMA4_OK) { - if (dev->chip_id == BMA423_CHIP_ID) { - /* Resolution of BMA423 sensor is 12 bit */ - dev->resolution = 12; - dev->feature_len = BMA423_FEATURE_SIZE; - dev->variant = BMA42X_VARIANT; - } else { - rslt |= BMA4_E_INVALID_SENSOR; - } - } + if (rslt == BMA4_OK) { + if (dev->chip_id == BMA423_CHIP_ID) { + /* Resolution of BMA423 sensor is 12 bit */ + dev->resolution = 12; + dev->feature_len = BMA423_FEATURE_SIZE; + dev->variant = BMA42X_VARIANT; + } else { + rslt |= BMA4_E_INVALID_SENSOR; + } + } - return rslt; + return rslt; } /*! - * @brief This API is used to upload the config file to enable - * the features of the sensor. + * @brief This API is used to upload the config file to enable + * the features of the sensor. */ uint16_t bma423_write_config_file(struct bma4_dev *dev) { - uint16_t rslt = BMA4_OK; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - /* Config. stream read/write length boundary check */ - if ((dev->read_write_len >= BMA423_RD_WR_MIN_LEN) && - (dev->read_write_len <= BMA423_FEATURE_SIZE)) { - /* Even or odd check */ - if ((dev->read_write_len % 2) != 0) - dev->read_write_len = dev->read_write_len - 1; - /*Assign stream data */ - dev->config_file_ptr = bma423_config_file; - rslt = bma4_write_config_file(dev); - } else { - rslt = BMA4_E_RD_WR_LENGTH_INVALID; - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } - return rslt; + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + /* Config. stream read/write length boundary check */ + if ((dev->read_write_len >= BMA423_RD_WR_MIN_LEN) && + (dev->read_write_len <= BMA423_FEATURE_SIZE)) { + /* Even or odd check */ + if ((dev->read_write_len % 2) != 0) + dev->read_write_len = dev->read_write_len - 1; + /*Assign stream data */ + dev->config_file_ptr = bma423_config_file; + rslt = bma4_write_config_file(dev); + } else { + rslt = BMA4_E_RD_WR_LENGTH_INVALID; + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } + return rslt; } /*! - * @brief This API is used to get the configuration id of the sensor. + * @brief This API is used to get the configuration id of the sensor. */ uint16_t bma423_get_config_id(uint16_t *config_id, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_CONFIG_ID_OFFSET; - uint16_t rslt = BMA4_OK; - uint16_t config_id_lsb = 0; - uint16_t config_id_msb = 0; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_CONFIG_ID_OFFSET; + uint16_t rslt = BMA4_OK; + uint16_t config_id_lsb = 0; + uint16_t config_id_msb = 0; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - config_id_lsb = (uint16_t)feature_config[index]; - config_id_msb = ((uint16_t)feature_config[index + 1]) << 8; - *config_id = config_id_lsb | config_id_msb; - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + config_id_lsb = (uint16_t)feature_config[index]; + config_id_msb = ((uint16_t)feature_config[index + 1]) << 8; + *config_id = config_id_lsb | config_id_msb; + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API sets/unsets the user provided interrupt to either - * interrupt pin1 or pin2 in the sensor. + * @brief This API sets/unsets the user provided interrupt to either + * interrupt pin1 or pin2 in the sensor. */ uint16_t bma423_map_interrupt(uint8_t int_line, uint16_t int_map, uint8_t enable, struct bma4_dev *dev) { - uint16_t rslt = BMA4_OK; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - if (int_line <= 1) { - /* Map/Unmap the interrupt */ - rslt = bma4_map_interrupt(int_line, int_map, enable, dev); - } else { - rslt = BMA4_E_INT_LINE_INVALID; - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + if (int_line <= 1) { + /* Map/Unmap the interrupt */ + rslt = bma4_map_interrupt(int_line, int_map, enable, dev); + } else { + rslt = BMA4_E_INT_LINE_INVALID; + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API reads the bma423 interrupt status from the sensor. + * @brief This API reads the bma423 interrupt status from the sensor. */ uint16_t bma423_read_int_status(uint16_t *int_status, struct bma4_dev *dev) { - uint16_t rslt = BMA4_OK; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - /* Read the interrupt status */ - rslt = bma4_read_int_status(int_status, dev); - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + /* Read the interrupt status */ + rslt = bma4_read_int_status(int_status, dev); + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API enables/disables the features of the sensor. + * @brief This API enables/disables the features of the sensor. */ uint16_t bma423_feature_enable(uint8_t feature, uint8_t enable, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint16_t rslt = BMA4_OK; - uint8_t len; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint16_t rslt = BMA4_OK; + uint8_t len; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - /* Update the length for read and write */ - update_len(&len, feature, enable); - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, len, dev); - if (rslt == BMA4_OK) { - if (enable == TRUE) { - /* Enables the feature */ - rslt |= feature_enable(feature, len, feature_config, dev); - } else { - /* Disables the feature */ - rslt |= feature_disable(feature, len, feature_config, dev); - } - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + /* Update the length for read and write */ + update_len(&len, feature, enable); + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, len, dev); + if (rslt == BMA4_OK) { + if (enable == TRUE) { + /* Enables the feature */ + rslt |= feature_enable(feature, len, feature_config, dev); + } else { + /* Disables the feature */ + rslt |= feature_disable(feature, len, feature_config, dev); + } + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API performs x, y and z axis remapping in the sensor. + * @brief This API performs x, y and z axis remapping in the sensor. */ uint16_t bma423_set_remap_axes(const struct bma423_axes_remap *remap_data, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_AXES_REMAP_OFFSET; - uint16_t rslt = BMA4_OK; - uint8_t x_axis = 0; - uint8_t x_axis_sign = 0; - uint8_t y_axis = 0; - uint8_t y_axis_sign = 0; - uint8_t z_axis = 0; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_AXES_REMAP_OFFSET; + uint16_t rslt = BMA4_OK; + uint8_t x_axis = 0; + uint8_t x_axis_sign = 0; + uint8_t y_axis = 0; + uint8_t y_axis_sign = 0; + uint8_t z_axis = 0; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - x_axis = remap_data->x_axis & BMA423_X_AXIS_MASK; - x_axis_sign = (remap_data->x_axis_sign << 2) & BMA423_X_AXIS_SIGN_MASK; - y_axis = (remap_data->y_axis << 3) & BMA423_Y_AXIS_MASK; - y_axis_sign = (remap_data->y_axis_sign << 5) & BMA423_Y_AXIS_SIGN_MASK; - z_axis = (remap_data->z_axis << 6) & BMA423_Z_AXIS_MASK; - feature_config[index] = x_axis | x_axis_sign | y_axis | y_axis_sign | z_axis; - feature_config[index + 1] = remap_data->z_axis_sign & BMA423_Z_AXIS_SIGN_MASK; - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + x_axis = remap_data->x_axis & BMA423_X_AXIS_MASK; + x_axis_sign = (remap_data->x_axis_sign << 2) & BMA423_X_AXIS_SIGN_MASK; + y_axis = (remap_data->y_axis << 3) & BMA423_Y_AXIS_MASK; + y_axis_sign = (remap_data->y_axis_sign << 5) & BMA423_Y_AXIS_SIGN_MASK; + z_axis = (remap_data->z_axis << 6) & BMA423_Z_AXIS_MASK; + feature_config[index] = x_axis | x_axis_sign | y_axis | y_axis_sign | z_axis; + feature_config[index + 1] = remap_data->z_axis_sign & BMA423_Z_AXIS_SIGN_MASK; + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API reads the x, y and z axis remap data from the sensor. + * @brief This API reads the x, y and z axis remap data from the sensor. */ uint16_t bma423_get_remap_axes(struct bma423_axes_remap *remap_data, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_AXES_REMAP_OFFSET; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_AXES_REMAP_OFFSET; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - remap_data->x_axis = feature_config[index] & BMA423_X_AXIS_MASK; - remap_data->x_axis_sign = (feature_config[index] & BMA423_X_AXIS_SIGN_MASK) >> 2; - remap_data->y_axis = (feature_config[index] & BMA423_Y_AXIS_MASK) >> 3; - remap_data->y_axis_sign = (feature_config[index] & BMA423_Y_AXIS_SIGN_MASK) >> 5; - remap_data->z_axis = (feature_config[index] & BMA423_Z_AXIS_MASK) >> 6; - remap_data->z_axis_sign = (feature_config[index + 1] & BMA423_Z_AXIS_SIGN_MASK); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + remap_data->x_axis = feature_config[index] & BMA423_X_AXIS_MASK; + remap_data->x_axis_sign = (feature_config[index] & BMA423_X_AXIS_SIGN_MASK) >> 2; + remap_data->y_axis = (feature_config[index] & BMA423_Y_AXIS_MASK) >> 3; + remap_data->y_axis_sign = (feature_config[index] & BMA423_Y_AXIS_SIGN_MASK) >> 5; + remap_data->z_axis = (feature_config[index] & BMA423_Z_AXIS_MASK) >> 6; + remap_data->z_axis_sign = (feature_config[index + 1] & BMA423_Z_AXIS_SIGN_MASK); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API enables the any motion feature according to the axis - * set by the user in the sensor. + * @brief This API enables the any motion feature according to the axis + * set by the user in the sensor. */ uint16_t bma423_anymotion_enable_axis(uint8_t axis, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_ANYMOTION_EN_LEN + 2] = {0}; - /* Anymotion axis enable bit pos. is 3 byte ahead of the - anymotion base address(0x00) */ - uint8_t index = 3; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_ANYMOTION_EN_LEN + 2] = {0}; + /* Anymotion axis enable bit pos. is 3 byte ahead of the + anymotion base address(0x00) */ + uint8_t index = 3; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_ANYMOTION_EN_LEN + 2, dev); - if (rslt == BMA4_OK) { - feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], - BMA423_ANY_NO_MOTION_AXIS_EN, axis); - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_ANYMOTION_EN_LEN + 2, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_ANYMOTION_EN_LEN + 2, dev); + if (rslt == BMA4_OK) { + feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], + BMA423_ANY_NO_MOTION_AXIS_EN, axis); + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_ANYMOTION_EN_LEN + 2, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } -/*! @brief This API sets the configuration of Any motion feature in - * the sensor. +/*! @brief This API sets the configuration of Any motion feature in + * the sensor. */ uint16_t bma423_set_any_motion_config(const struct bma423_anymotion_config *any_motion, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_ANYMOTION_EN_LEN + 2] = {0}; - uint8_t index = BMA423_ANY_NO_MOTION_OFFSET; - uint16_t duration_lsb = 0; - uint16_t duration_msb = 0; - uint16_t duration = 0; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_ANYMOTION_EN_LEN + 2] = {0}; + uint8_t index = BMA423_ANY_NO_MOTION_OFFSET; + uint16_t duration_lsb = 0; + uint16_t duration_msb = 0; + uint16_t duration = 0; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_ANYMOTION_EN_LEN + 2, dev); - if (rslt == BMA4_OK) { - /* Assign threshold value in feature config array */ - feature_config[index++] = BMA4_GET_LSB(any_motion->threshold); - feature_config[index] = BMA4_GET_MSB(any_motion->threshold); - /* Assign no motion selection value in feature config array*/ - feature_config[index++] |= (uint8_t) - (any_motion->nomotion_sel << BMA423_ANY_NO_MOTION_SEL_POS); + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_ANYMOTION_EN_LEN + 2, dev); + if (rslt == BMA4_OK) { + /* Assign threshold value in feature config array */ + feature_config[index++] = BMA4_GET_LSB(any_motion->threshold); + feature_config[index] = BMA4_GET_MSB(any_motion->threshold); + /* Assign no motion selection value in feature config array*/ + feature_config[index++] |= (uint8_t) + (any_motion->nomotion_sel << BMA423_ANY_NO_MOTION_SEL_POS); - /* Extract duration */ - duration_lsb = feature_config[index]; - duration_msb = feature_config[index + 1] << 8; - duration = duration_lsb | duration_msb; - duration = BMA4_SET_BITS_POS_0(duration, - BMA423_ANY_NO_MOTION_DUR, any_motion->duration); - /* Assign duration value in feature config array*/ - feature_config[index++] = BMA4_GET_LSB(duration); - feature_config[index] = BMA4_GET_MSB(duration); + /* Extract duration */ + duration_lsb = feature_config[index]; + duration_msb = feature_config[index + 1] << 8; + duration = duration_lsb | duration_msb; + duration = BMA4_SET_BITS_POS_0(duration, + BMA423_ANY_NO_MOTION_DUR, any_motion->duration); + /* Assign duration value in feature config array*/ + feature_config[index++] = BMA4_GET_LSB(duration); + feature_config[index] = BMA4_GET_MSB(duration); - /* Write any motion settings to the sensor*/ - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_ANYMOTION_EN_LEN + 2, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + /* Write any motion settings to the sensor*/ + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_ANYMOTION_EN_LEN + 2, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } -/*! @brief This API gets the configuration of any motion feature from - * the sensor. +/*! @brief This API gets the configuration of any motion feature from + * the sensor. */ uint16_t bma423_get_any_motion_config(struct bma423_anymotion_config *any_motion, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_ANYMOTION_EN_LEN + 2] = {0}; - uint8_t anymotion = 0; - uint16_t rslt = BMA4_OK; - uint16_t *data_p = (uint16_t *)feature_config; + uint8_t feature_config[BMA423_ANYMOTION_EN_LEN + 2] = {0}; + uint8_t anymotion = 0; + uint16_t rslt = BMA4_OK; + uint16_t *data_p = (uint16_t *)feature_config; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_ANYMOTION_EN_LEN + 2, dev); - if (rslt == BMA4_OK) { - /* Extract threshold value */ - any_motion->threshold = (*data_p) & BMA423_ANY_NO_MOTION_THRES_MSK; - /* Extract threshold & nomotion selection - * data */ - anymotion = ((uint8_t)(*(data_p++) >> 8)) & BMA423_ANY_NO_MOTION_SEL_MSK; - /* Extract no motion field */ - any_motion->nomotion_sel = anymotion >> - BMA423_ANY_NO_MOTION_SEL_POS; - /* Extract duration value */ - any_motion->duration = (*(data_p)) & BMA423_ANY_NO_MOTION_DUR_MSK; - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_ANYMOTION_EN_LEN + 2, dev); + if (rslt == BMA4_OK) { + /* Extract threshold value */ + any_motion->threshold = (*data_p) & BMA423_ANY_NO_MOTION_THRES_MSK; + /* Extract threshold & nomotion selection + * data */ + anymotion = ((uint8_t)(*(data_p++) >> 8)) & BMA423_ANY_NO_MOTION_SEL_MSK; + /* Extract no motion field */ + any_motion->nomotion_sel = anymotion >> + BMA423_ANY_NO_MOTION_SEL_POS; + /* Extract duration value */ + any_motion->duration = (*(data_p)) & BMA423_ANY_NO_MOTION_DUR_MSK; + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API enables or disables the step detector feature in the - * sensor. + * @brief This API enables or disables the step detector feature in the + * sensor. */ uint16_t bma423_step_detector_enable(uint8_t enable, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint16_t rslt = BMA4_OK; - /* Step detector enable bit pos. is 1 byte ahead of the base address */ - uint8_t index = BMA423_STEP_CNTR_OFFSET + 1; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint16_t rslt = BMA4_OK; + /* Step detector enable bit pos. is 1 byte ahead of the base address */ + uint8_t index = BMA423_STEP_CNTR_OFFSET + 1; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], - BMA423_STEP_DETECTOR_EN, enable); - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], + BMA423_STEP_DETECTOR_EN, enable); + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API sets the watermark level for step counter - * interrupt in the sensor. + * @brief This API sets the watermark level for step counter + * interrupt in the sensor. */ uint16_t bma423_step_counter_set_watermark(uint16_t step_counter_wm, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_STEP_CNTR_OFFSET; - uint16_t wm_lsb = 0; - uint16_t wm_msb = 0; - uint16_t rslt = BMA4_OK; - uint16_t data = 0; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_STEP_CNTR_OFFSET; + uint16_t wm_lsb = 0; + uint16_t wm_msb = 0; + uint16_t rslt = BMA4_OK; + uint16_t data = 0; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - wm_lsb = feature_config[index]; - wm_msb = feature_config[index + 1] << 8; - data = wm_lsb | wm_msb; - /* Sets only watermark bits in the complete - 16 bits of data */ - data = BMA4_SET_BITS_POS_0(data, BMA423_STEP_CNTR_WM, step_counter_wm); - /* Splits 16 bits of data to individual - 8 bits data */ - feature_config[index] = BMA4_GET_LSB(data); - feature_config[index + 1] = BMA4_GET_MSB(data); - /* Writes stepcounter watermark settings - in the sensor */ - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + wm_lsb = feature_config[index]; + wm_msb = feature_config[index + 1] << 8; + data = wm_lsb | wm_msb; + /* Sets only watermark bits in the complete + 16 bits of data */ + data = BMA4_SET_BITS_POS_0(data, BMA423_STEP_CNTR_WM, step_counter_wm); + /* Splits 16 bits of data to individual + 8 bits data */ + feature_config[index] = BMA4_GET_LSB(data); + feature_config[index + 1] = BMA4_GET_MSB(data); + /* Writes stepcounter watermark settings + in the sensor */ + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API gets the water mark level set for step counter interrupt - * in the sensor + * @brief This API gets the water mark level set for step counter interrupt + * in the sensor */ uint16_t bma423_step_counter_get_watermark(uint16_t *step_counter_wm, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_STEP_CNTR_OFFSET; - uint16_t wm_lsb = 0; - uint16_t wm_msb = 0; - uint16_t rslt = BMA4_OK; - uint16_t data = 0; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_STEP_CNTR_OFFSET; + uint16_t wm_lsb = 0; + uint16_t wm_msb = 0; + uint16_t rslt = BMA4_OK; + uint16_t data = 0; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - wm_lsb = feature_config[index]; - wm_msb = feature_config[index + 1] << 8; - data = wm_lsb | wm_msb; - *step_counter_wm = BMA4_GET_BITS_POS_0(data, BMA423_STEP_CNTR_WM); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + wm_lsb = feature_config[index]; + wm_msb = feature_config[index + 1] << 8; + data = wm_lsb | wm_msb; + *step_counter_wm = BMA4_GET_BITS_POS_0(data, BMA423_STEP_CNTR_WM); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API resets the counted steps of step counter. + * @brief This API resets the counted steps of step counter. */ uint16_t bma423_reset_step_counter(struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - /* Reset bit is 1 byte ahead of base address */ - uint8_t index = BMA423_STEP_CNTR_OFFSET + 1; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + /* Reset bit is 1 byte ahead of base address */ + uint8_t index = BMA423_STEP_CNTR_OFFSET + 1; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], - BMA423_STEP_CNTR_RST, 1); - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } - return rslt; + if (rslt == BMA4_OK) { + feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], + BMA423_STEP_CNTR_RST, 1); + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } + return rslt; } /*! - * @brief This API gets the number of counted steps of the step counter - * feature from the sensor. + * @brief This API gets the number of counted steps of the step counter + * feature from the sensor. */ uint16_t bma423_step_counter_output(uint32_t *step_count, struct bma4_dev *dev) { - uint8_t data[BMA423_STEP_CNTR_DATA_SIZE] = {0}; - uint16_t rslt = BMA4_OK; - uint32_t step_count_0 = 0; - uint32_t step_count_1 = 0; - uint32_t step_count_2 = 0; - uint32_t step_count_3 = 0; + uint8_t data[BMA423_STEP_CNTR_DATA_SIZE] = {0}; + uint16_t rslt = BMA4_OK; + uint32_t step_count_0 = 0; + uint32_t step_count_1 = 0; + uint32_t step_count_2 = 0; + uint32_t step_count_3 = 0; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - /* Reads the step counter output data from the - gpio register */ - rslt = bma4_read_regs(BMA4_STEP_CNT_OUT_0_ADDR, data, - BMA423_STEP_CNTR_DATA_SIZE, dev); + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + /* Reads the step counter output data from the + gpio register */ + rslt = bma4_read_regs(BMA4_STEP_CNT_OUT_0_ADDR, data, + BMA423_STEP_CNTR_DATA_SIZE, dev); - if (rslt == BMA4_OK) { - step_count_0 = (uint32_t)data[0]; - step_count_1 = (uint32_t)data[1] << 8; - step_count_2 = (uint32_t)data[2] << 16; - step_count_3 = (uint32_t)data[3] << 24; - *step_count = step_count_0 | step_count_1 | step_count_2 | step_count_3; - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (rslt == BMA4_OK) { + step_count_0 = (uint32_t)data[0]; + step_count_1 = (uint32_t)data[1] << 8; + step_count_2 = (uint32_t)data[2] << 16; + step_count_3 = (uint32_t)data[3] << 24; + *step_count = step_count_0 | step_count_1 | step_count_2 | step_count_3; + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! @@ -1213,23 +1213,23 @@ uint16_t bma423_step_counter_output(uint32_t *step_count, struct bma4_dev *dev) */ uint16_t bma423_activity_output(uint8_t *activity, struct bma4_dev *dev) { - uint8_t data = 0; - uint16_t rslt = BMA4_OK; + uint8_t data = 0; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - /* Reads the activity output from the gpio register */ - rslt = bma4_read_regs(BMA4_ACTIVITY_OUT_ADDR, &data, 1, dev); - if (rslt == BMA4_OK) - *activity = data; - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + /* Reads the activity output from the gpio register */ + rslt = bma4_read_regs(BMA4_ACTIVITY_OUT_ADDR, &data, 1, dev); + if (rslt == BMA4_OK) + *activity = data; + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! @@ -1237,173 +1237,173 @@ uint16_t bma423_activity_output(uint8_t *activity, struct bma4_dev *dev) */ uint16_t bma423_select_platform(uint8_t platform, struct bma4_dev *dev) { - uint16_t rslt = BMA4_OK; - struct bma423_stepcounter_settings sc_settings = {0}; + uint16_t rslt = BMA4_OK; + struct bma423_stepcounter_settings sc_settings = {0}; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - switch (platform) { - case BMA423_PHONE_CONFIG: - sc_settings.param1 = BMA423_PHONE_SC_PARAM_1; - sc_settings.param2 = BMA423_PHONE_SC_PARAM_2; - sc_settings.param3 = BMA423_PHONE_SC_PARAM_3; - sc_settings.param4 = BMA423_PHONE_SC_PARAM_4; - sc_settings.param5 = BMA423_PHONE_SC_PARAM_5; - sc_settings.param6 = BMA423_PHONE_SC_PARAM_6; - sc_settings.param7 = BMA423_PHONE_SC_PARAM_7; - sc_settings.param8 = BMA423_PHONE_SC_PARAM_8; - sc_settings.param9 = BMA423_PHONE_SC_PARAM_9; - sc_settings.param10 = BMA423_PHONE_SC_PARAM_10; - sc_settings.param11 = BMA423_PHONE_SC_PARAM_11; - sc_settings.param12 = BMA423_PHONE_SC_PARAM_12; - sc_settings.param13 = BMA423_PHONE_SC_PARAM_13; - sc_settings.param14 = BMA423_PHONE_SC_PARAM_14; - sc_settings.param15 = BMA423_PHONE_SC_PARAM_15; - sc_settings.param16 = BMA423_PHONE_SC_PARAM_16; - sc_settings.param17 = BMA423_PHONE_SC_PARAM_17; - sc_settings.param18 = BMA423_PHONE_SC_PARAM_18; - sc_settings.param19 = BMA423_PHONE_SC_PARAM_19; - sc_settings.param20 = BMA423_PHONE_SC_PARAM_20; - sc_settings.param21 = BMA423_PHONE_SC_PARAM_21; - sc_settings.param22 = BMA423_PHONE_SC_PARAM_22; - sc_settings.param23 = BMA423_PHONE_SC_PARAM_23; - sc_settings.param24 = BMA423_PHONE_SC_PARAM_24; - sc_settings.param25 = BMA423_PHONE_SC_PARAM_25; - break; + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + switch (platform) { + case BMA423_PHONE_CONFIG: + sc_settings.param1 = BMA423_PHONE_SC_PARAM_1; + sc_settings.param2 = BMA423_PHONE_SC_PARAM_2; + sc_settings.param3 = BMA423_PHONE_SC_PARAM_3; + sc_settings.param4 = BMA423_PHONE_SC_PARAM_4; + sc_settings.param5 = BMA423_PHONE_SC_PARAM_5; + sc_settings.param6 = BMA423_PHONE_SC_PARAM_6; + sc_settings.param7 = BMA423_PHONE_SC_PARAM_7; + sc_settings.param8 = BMA423_PHONE_SC_PARAM_8; + sc_settings.param9 = BMA423_PHONE_SC_PARAM_9; + sc_settings.param10 = BMA423_PHONE_SC_PARAM_10; + sc_settings.param11 = BMA423_PHONE_SC_PARAM_11; + sc_settings.param12 = BMA423_PHONE_SC_PARAM_12; + sc_settings.param13 = BMA423_PHONE_SC_PARAM_13; + sc_settings.param14 = BMA423_PHONE_SC_PARAM_14; + sc_settings.param15 = BMA423_PHONE_SC_PARAM_15; + sc_settings.param16 = BMA423_PHONE_SC_PARAM_16; + sc_settings.param17 = BMA423_PHONE_SC_PARAM_17; + sc_settings.param18 = BMA423_PHONE_SC_PARAM_18; + sc_settings.param19 = BMA423_PHONE_SC_PARAM_19; + sc_settings.param20 = BMA423_PHONE_SC_PARAM_20; + sc_settings.param21 = BMA423_PHONE_SC_PARAM_21; + sc_settings.param22 = BMA423_PHONE_SC_PARAM_22; + sc_settings.param23 = BMA423_PHONE_SC_PARAM_23; + sc_settings.param24 = BMA423_PHONE_SC_PARAM_24; + sc_settings.param25 = BMA423_PHONE_SC_PARAM_25; + break; - case BMA423_WRIST_CONFIG: - sc_settings.param1 = BMA423_WRIST_SC_PARAM_1; - sc_settings.param2 = BMA423_WRIST_SC_PARAM_2; - sc_settings.param3 = BMA423_WRIST_SC_PARAM_3; - sc_settings.param4 = BMA423_WRIST_SC_PARAM_4; - sc_settings.param5 = BMA423_WRIST_SC_PARAM_5; - sc_settings.param6 = BMA423_WRIST_SC_PARAM_6; - sc_settings.param7 = BMA423_WRIST_SC_PARAM_7; - sc_settings.param8 = BMA423_WRIST_SC_PARAM_8; - sc_settings.param9 = BMA423_WRIST_SC_PARAM_9; - sc_settings.param10 = BMA423_WRIST_SC_PARAM_10; - sc_settings.param11 = BMA423_WRIST_SC_PARAM_11; - sc_settings.param12 = BMA423_WRIST_SC_PARAM_12; - sc_settings.param13 = BMA423_WRIST_SC_PARAM_13; - sc_settings.param14 = BMA423_WRIST_SC_PARAM_14; - sc_settings.param15 = BMA423_WRIST_SC_PARAM_15; - sc_settings.param16 = BMA423_WRIST_SC_PARAM_16; - sc_settings.param17 = BMA423_WRIST_SC_PARAM_17; - sc_settings.param18 = BMA423_WRIST_SC_PARAM_18; - sc_settings.param19 = BMA423_WRIST_SC_PARAM_19; - sc_settings.param20 = BMA423_WRIST_SC_PARAM_20; - sc_settings.param21 = BMA423_WRIST_SC_PARAM_21; - sc_settings.param22 = BMA423_WRIST_SC_PARAM_22; - sc_settings.param23 = BMA423_WRIST_SC_PARAM_23; - sc_settings.param24 = BMA423_WRIST_SC_PARAM_24; - sc_settings.param25 = BMA423_WRIST_SC_PARAM_25; - break; + case BMA423_WRIST_CONFIG: + sc_settings.param1 = BMA423_WRIST_SC_PARAM_1; + sc_settings.param2 = BMA423_WRIST_SC_PARAM_2; + sc_settings.param3 = BMA423_WRIST_SC_PARAM_3; + sc_settings.param4 = BMA423_WRIST_SC_PARAM_4; + sc_settings.param5 = BMA423_WRIST_SC_PARAM_5; + sc_settings.param6 = BMA423_WRIST_SC_PARAM_6; + sc_settings.param7 = BMA423_WRIST_SC_PARAM_7; + sc_settings.param8 = BMA423_WRIST_SC_PARAM_8; + sc_settings.param9 = BMA423_WRIST_SC_PARAM_9; + sc_settings.param10 = BMA423_WRIST_SC_PARAM_10; + sc_settings.param11 = BMA423_WRIST_SC_PARAM_11; + sc_settings.param12 = BMA423_WRIST_SC_PARAM_12; + sc_settings.param13 = BMA423_WRIST_SC_PARAM_13; + sc_settings.param14 = BMA423_WRIST_SC_PARAM_14; + sc_settings.param15 = BMA423_WRIST_SC_PARAM_15; + sc_settings.param16 = BMA423_WRIST_SC_PARAM_16; + sc_settings.param17 = BMA423_WRIST_SC_PARAM_17; + sc_settings.param18 = BMA423_WRIST_SC_PARAM_18; + sc_settings.param19 = BMA423_WRIST_SC_PARAM_19; + sc_settings.param20 = BMA423_WRIST_SC_PARAM_20; + sc_settings.param21 = BMA423_WRIST_SC_PARAM_21; + sc_settings.param22 = BMA423_WRIST_SC_PARAM_22; + sc_settings.param23 = BMA423_WRIST_SC_PARAM_23; + sc_settings.param24 = BMA423_WRIST_SC_PARAM_24; + sc_settings.param25 = BMA423_WRIST_SC_PARAM_25; + break; - default: - rslt = BMA4_E_OUT_OF_RANGE; - break; - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + default: + rslt = BMA4_E_OUT_OF_RANGE; + break; + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - if (rslt == BMA4_OK) { - /* Set the step counter parameter */ - rslt = bma423_stepcounter_set_parameter(&sc_settings, dev); - } + if (rslt == BMA4_OK) { + /* Set the step counter parameter */ + rslt = bma423_stepcounter_set_parameter(&sc_settings, dev); + } - return rslt; + return rslt; } /*! - * @brief This API gets the parameter1 to parameter7 settings of the - * step counter feature. + * @brief This API gets the parameter1 to parameter7 settings of the + * step counter feature. */ uint16_t bma423_stepcounter_get_parameter(struct bma423_stepcounter_settings *setting, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint16_t *data_p = (uint16_t *)feature_config; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint16_t *data_p = (uint16_t *)feature_config; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - /* To convert 8bit to 16 bit address */ - data_p = data_p + BMA423_STEP_CNTR_PARAM_OFFSET/2; - extract_stepcounter_parameter(setting, data_p); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (rslt == BMA4_OK) { + /* To convert 8bit to 16 bit address */ + data_p = data_p + BMA423_STEP_CNTR_PARAM_OFFSET/2; + extract_stepcounter_parameter(setting, data_p); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API sets the parameter1 to parameter7 settings of the - * step counter feature in the sensor. + * @brief This API sets the parameter1 to parameter7 settings of the + * step counter feature in the sensor. */ uint16_t bma423_stepcounter_set_parameter(const struct bma423_stepcounter_settings *setting, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_STEP_CNTR_PARAM_OFFSET; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_STEP_CNTR_PARAM_OFFSET; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - update_stepcounter_parameter(setting, index, feature_config); - /* Writes stepcounter parameter settings - in the sensor */ - rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + update_stepcounter_parameter(setting, index, feature_config); + /* Writes stepcounter parameter settings + in the sensor */ + rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API sets the sensitivity of wake up feature in the sensor + * @brief This API sets the sensitivity of wake up feature in the sensor */ uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_WAKEUP_OFFSET; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_WAKEUP_OFFSET; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], - BMA423_WAKEUP_SENS, sensitivity); - /* Writes sensitivity settings in the sensor */ - rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], + BMA423_WAKEUP_SENS, sensitivity); + /* Writes sensitivity settings in the sensor */ + rslt |= bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! @@ -1411,254 +1411,254 @@ uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity, struct bma4_dev *dev */ uint16_t bma423_wakeup_get_sensitivity(uint8_t *sensitivity, struct bma4_dev *dev) { - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; - uint8_t index = BMA423_WAKEUP_OFFSET; - uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0}; + uint8_t index = BMA423_WAKEUP_OFFSET; + uint16_t rslt = BMA4_OK; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - /* Extracts sensitivity data */ - *sensitivity = BMA4_GET_BITSLICE(feature_config[index], BMA423_WAKEUP_SENS); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + /* Extracts sensitivity data */ + *sensitivity = BMA4_GET_BITSLICE(feature_config[index], BMA423_WAKEUP_SENS); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API is used to select single/double tap - * feature in the sensor + * @brief This API is used to select single/double tap + * feature in the sensor */ uint16_t bma423_tap_selection(const uint8_t tap_select, struct bma4_dev *dev) { - uint16_t rslt = BMA4_OK; - uint8_t feature_config[BMA423_FEATURE_SIZE] = {0,}; - uint8_t index = BMA423_WAKEUP_OFFSET; + uint16_t rslt = BMA4_OK; + uint8_t feature_config[BMA423_FEATURE_SIZE] = {0,}; + uint8_t index = BMA423_WAKEUP_OFFSET; - if (dev != NULL) { - if (dev->chip_id == BMA423_CHIP_ID) { - rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); - if (rslt == BMA4_OK) { - feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], - BMA423_TAP_SEL, tap_select); - rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, - BMA423_FEATURE_SIZE, dev); - } - } else { - rslt = BMA4_E_INVALID_SENSOR; - } - } else { - rslt = BMA4_E_NULL_PTR; - } + if (dev != NULL) { + if (dev->chip_id == BMA423_CHIP_ID) { + rslt = bma4_read_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, BMA423_FEATURE_SIZE, dev); + if (rslt == BMA4_OK) { + feature_config[index] = BMA4_SET_BITSLICE(feature_config[index], + BMA423_TAP_SEL, tap_select); + rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, + BMA423_FEATURE_SIZE, dev); + } + } else { + rslt = BMA4_E_INVALID_SENSOR; + } + } else { + rslt = BMA4_E_NULL_PTR; + } - return rslt; + return rslt; } /*! - * @brief This API update the length for read and write. + * @brief This API update the length for read and write. */ static void update_len(uint8_t *len, uint8_t feature, uint8_t enable) { - uint8_t length = BMA423_FEATURE_SIZE; + uint8_t length = BMA423_FEATURE_SIZE; - if ((feature == BMA423_ANY_MOTION) || (feature == BMA423_NO_MOTION)) { - /* Change the feature length to 2 for reading and writing of 2 bytes for - any/no-motion enable */ - length = BMA423_ANYMOTION_EN_LEN; + if ((feature == BMA423_ANY_MOTION) || (feature == BMA423_NO_MOTION)) { + /* Change the feature length to 2 for reading and writing of 2 bytes for + any/no-motion enable */ + length = BMA423_ANYMOTION_EN_LEN; - /* Read and write 4 byte to disable the any/no motion completely along with - all axis */ - if (enable == BMA4_DISABLE) { - /*Change the feature length to 4 for reading and writing - of 4 bytes for any/no-motion enable */ - length = length + 2; - } - } + /* Read and write 4 byte to disable the any/no motion completely along with + all axis */ + if (enable == BMA4_DISABLE) { + /*Change the feature length to 4 for reading and writing + of 4 bytes for any/no-motion enable */ + length = length + 2; + } + } - *len = length; + *len = length; } /*! - * @brief This API enables the features of the sensor. + * @brief This API enables the features of the sensor. */ static uint16_t feature_enable(uint8_t feature, uint8_t len, uint8_t *feature_config, struct bma4_dev *dev) { - uint8_t index = 0; - uint16_t rslt; + uint8_t index = 0; + uint16_t rslt; - /* Enable step counter */ - if ((feature & BMA423_STEP_CNTR) > 0) { - /* Step counter enable bit pos. is 1 byte ahead of the - base address */ - index = BMA423_STEP_CNTR_OFFSET + 1; - feature_config[index] = feature_config[index] | BMA423_STEP_CNTR_EN_MSK; - } + /* Enable step counter */ + if ((feature & BMA423_STEP_CNTR) > 0) { + /* Step counter enable bit pos. is 1 byte ahead of the + base address */ + index = BMA423_STEP_CNTR_OFFSET + 1; + feature_config[index] = feature_config[index] | BMA423_STEP_CNTR_EN_MSK; + } - /* Enable activity */ - if ((feature & BMA423_ACTIVITY) > 0) { - /* Activity enable bit pos. is 1 byte ahead of the - base address */ - index = BMA423_STEP_CNTR_OFFSET + 1; - feature_config[index] = feature_config[index] | BMA423_ACTIVITY_EN_MSK; - } - /* Enable tilt */ - if ((feature & BMA423_TILT) > 0) { - /* Tilt enable bit pos. is the base address(0x3A) of tilt */ - index = BMA423_TILT_OFFSET; - feature_config[index] = feature_config[index] | BMA423_TILT_EN_MSK; - } + /* Enable activity */ + if ((feature & BMA423_ACTIVITY) > 0) { + /* Activity enable bit pos. is 1 byte ahead of the + base address */ + index = BMA423_STEP_CNTR_OFFSET + 1; + feature_config[index] = feature_config[index] | BMA423_ACTIVITY_EN_MSK; + } + /* Enable tilt */ + if ((feature & BMA423_TILT) > 0) { + /* Tilt enable bit pos. is the base address(0x3A) of tilt */ + index = BMA423_TILT_OFFSET; + feature_config[index] = feature_config[index] | BMA423_TILT_EN_MSK; + } - /* Enable wakeup */ - if ((feature & BMA423_WAKEUP) > 0) { - /* Wakeup enable bit pos. is the base address(0x38) of wakeup */ - index = BMA423_WAKEUP_OFFSET; - feature_config[index] = feature_config[index] | BMA423_WAKEUP_EN_MSK; - } + /* Enable wakeup */ + if ((feature & BMA423_WAKEUP) > 0) { + /* Wakeup enable bit pos. is the base address(0x38) of wakeup */ + index = BMA423_WAKEUP_OFFSET; + feature_config[index] = feature_config[index] | BMA423_WAKEUP_EN_MSK; + } - /* Enable anymotion/nomotion */ - if ((feature & BMA423_ANY_MOTION) > 0 || (feature & BMA423_NO_MOTION) > 0) { - /* Any/Nomotion enable bit pos. is 1 bytes ahead of the - any/nomotion base address(0x00) */ - index = 1; + /* Enable anymotion/nomotion */ + if ((feature & BMA423_ANY_MOTION) > 0 || (feature & BMA423_NO_MOTION) > 0) { + /* Any/Nomotion enable bit pos. is 1 bytes ahead of the + any/nomotion base address(0x00) */ + index = 1; - if ((feature & BMA423_ANY_MOTION) > 0) { - /* Enable anymotion */ - feature_config[index] = feature_config[index] & (~BMA423_ANY_NO_MOTION_SEL_MSK); - } else { - /* Enable nomotion */ - feature_config[index] = feature_config[index] | BMA423_ANY_NO_MOTION_SEL_MSK; - } - } + if ((feature & BMA423_ANY_MOTION) > 0) { + /* Enable anymotion */ + feature_config[index] = feature_config[index] & (~BMA423_ANY_NO_MOTION_SEL_MSK); + } else { + /* Enable nomotion */ + feature_config[index] = feature_config[index] | BMA423_ANY_NO_MOTION_SEL_MSK; + } + } - /* Write the feature enable settings in the sensor */ - rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, len, dev); + /* Write the feature enable settings in the sensor */ + rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, len, dev); - return rslt; + return rslt; } /*! - * @brief This API disables the features of the sensor. + * @brief This API disables the features of the sensor. */ static uint16_t feature_disable(uint8_t feature, uint8_t len, uint8_t *feature_config, struct bma4_dev *dev) { - uint8_t index = 0; - uint16_t rslt; + uint8_t index = 0; + uint16_t rslt; - /* Disable step counter */ - if ((feature & BMA423_STEP_CNTR) > 0) { - /* Step counter enable bit pos. is 1 byte ahead of the - base address */ - index = BMA423_STEP_CNTR_OFFSET + 1; - feature_config[index] = feature_config[index] & (~BMA423_STEP_CNTR_EN_MSK); - } + /* Disable step counter */ + if ((feature & BMA423_STEP_CNTR) > 0) { + /* Step counter enable bit pos. is 1 byte ahead of the + base address */ + index = BMA423_STEP_CNTR_OFFSET + 1; + feature_config[index] = feature_config[index] & (~BMA423_STEP_CNTR_EN_MSK); + } - /* Disable activity */ - if ((feature & BMA423_ACTIVITY) > 0) { - /* Activity enable bit pos. is 1 byte ahead of the - base address */ - index = BMA423_STEP_CNTR_OFFSET + 1; - feature_config[index] = feature_config[index] & (~BMA423_ACTIVITY_EN_MSK); - } - /* Disable tilt */ - if ((feature & BMA423_TILT) > 0) { - /* Tilt enable bit pos. is the base address(0x3A) of tilt */ - index = BMA423_TILT_OFFSET; - feature_config[index] = feature_config[index] & (~BMA423_TILT_EN_MSK); - } + /* Disable activity */ + if ((feature & BMA423_ACTIVITY) > 0) { + /* Activity enable bit pos. is 1 byte ahead of the + base address */ + index = BMA423_STEP_CNTR_OFFSET + 1; + feature_config[index] = feature_config[index] & (~BMA423_ACTIVITY_EN_MSK); + } + /* Disable tilt */ + if ((feature & BMA423_TILT) > 0) { + /* Tilt enable bit pos. is the base address(0x3A) of tilt */ + index = BMA423_TILT_OFFSET; + feature_config[index] = feature_config[index] & (~BMA423_TILT_EN_MSK); + } - /* Disable wakeup */ - if ((feature & BMA423_WAKEUP) > 0) { - /* Tilt enable bit pos. is the base address(0x38) of wakeup */ - index = BMA423_WAKEUP_OFFSET; - feature_config[index] = feature_config[index] & (~BMA423_WAKEUP_EN_MSK); - } + /* Disable wakeup */ + if ((feature & BMA423_WAKEUP) > 0) { + /* Tilt enable bit pos. is the base address(0x38) of wakeup */ + index = BMA423_WAKEUP_OFFSET; + feature_config[index] = feature_config[index] & (~BMA423_WAKEUP_EN_MSK); + } - /* Disable anymotion/nomotion */ - if ((feature & BMA423_ANY_MOTION) > 0 || (feature & BMA423_NO_MOTION) > 0) { - /* Any/Nomotion enable bit pos. is 1 bytes ahead of the - any/nomotion base address(0x00) */ - index = 1; + /* Disable anymotion/nomotion */ + if ((feature & BMA423_ANY_MOTION) > 0 || (feature & BMA423_NO_MOTION) > 0) { + /* Any/Nomotion enable bit pos. is 1 bytes ahead of the + any/nomotion base address(0x00) */ + index = 1; - if ((feature & BMA423_ANY_MOTION) > 0) { - /* Disable anymotion */ - feature_config[index] = feature_config[index] | BMA423_ANY_NO_MOTION_SEL_MSK; - } else { - /* Disable nomotion */ - feature_config[index] = feature_config[index] & (~BMA423_ANY_NO_MOTION_SEL_MSK); - } - /* Any/Nomotion axis enable bit pos. is 3 byte ahead of the - any/nomotion base address(0x00) */ - index = 3; - feature_config[index] = feature_config[index] & (~BMA423_ANY_NO_MOTION_AXIS_EN_MSK); - } - /* Write the configured settings in the sensor */ - rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, len, dev); + if ((feature & BMA423_ANY_MOTION) > 0) { + /* Disable anymotion */ + feature_config[index] = feature_config[index] | BMA423_ANY_NO_MOTION_SEL_MSK; + } else { + /* Disable nomotion */ + feature_config[index] = feature_config[index] & (~BMA423_ANY_NO_MOTION_SEL_MSK); + } + /* Any/Nomotion axis enable bit pos. is 3 byte ahead of the + any/nomotion base address(0x00) */ + index = 3; + feature_config[index] = feature_config[index] & (~BMA423_ANY_NO_MOTION_AXIS_EN_MSK); + } + /* Write the configured settings in the sensor */ + rslt = bma4_write_regs(BMA4_FEATURE_CONFIG_ADDR, feature_config, len, dev); - return rslt; + return rslt; } /*! * @brief This API update the settings of step counter. */ static void update_stepcounter_parameter(const struct bma423_stepcounter_settings *setting, - uint8_t index, uint8_t *feature_config) + uint8_t index, uint8_t *feature_config) { - feature_config[index++] = BMA4_GET_LSB(setting->param1); - feature_config[index++] = BMA4_GET_MSB(setting->param1); - feature_config[index++] = BMA4_GET_LSB(setting->param2); - feature_config[index++] = BMA4_GET_MSB(setting->param2); - feature_config[index++] = BMA4_GET_LSB(setting->param3); - feature_config[index++] = BMA4_GET_MSB(setting->param3); - feature_config[index++] = BMA4_GET_LSB(setting->param4); - feature_config[index++] = BMA4_GET_MSB(setting->param4); - feature_config[index++] = BMA4_GET_LSB(setting->param5); - feature_config[index++] = BMA4_GET_MSB(setting->param5); - feature_config[index++] = BMA4_GET_LSB(setting->param6); - feature_config[index++] = BMA4_GET_MSB(setting->param6); - feature_config[index++] = BMA4_GET_LSB(setting->param7); - feature_config[index++] = BMA4_GET_MSB(setting->param7); - feature_config[index++] = BMA4_GET_LSB(setting->param8); - feature_config[index++] = BMA4_GET_MSB(setting->param8); - feature_config[index++] = BMA4_GET_LSB(setting->param9); - feature_config[index++] = BMA4_GET_MSB(setting->param9); - feature_config[index++] = BMA4_GET_LSB(setting->param10); - feature_config[index++] = BMA4_GET_MSB(setting->param10); - feature_config[index++] = BMA4_GET_LSB(setting->param11); - feature_config[index++] = BMA4_GET_MSB(setting->param11); - feature_config[index++] = BMA4_GET_LSB(setting->param12); - feature_config[index++] = BMA4_GET_MSB(setting->param12); - feature_config[index++] = BMA4_GET_LSB(setting->param13); - feature_config[index++] = BMA4_GET_MSB(setting->param13); - feature_config[index++] = BMA4_GET_LSB(setting->param14); - feature_config[index++] = BMA4_GET_MSB(setting->param14); - feature_config[index++] = BMA4_GET_LSB(setting->param15); - feature_config[index++] = BMA4_GET_MSB(setting->param15); - feature_config[index++] = BMA4_GET_LSB(setting->param16); - feature_config[index++] = BMA4_GET_MSB(setting->param16); - feature_config[index++] = BMA4_GET_LSB(setting->param17); - feature_config[index++] = BMA4_GET_MSB(setting->param17); - feature_config[index++] = BMA4_GET_LSB(setting->param18); - feature_config[index++] = BMA4_GET_MSB(setting->param18); - feature_config[index++] = BMA4_GET_LSB(setting->param19); - feature_config[index++] = BMA4_GET_MSB(setting->param19); - feature_config[index++] = BMA4_GET_LSB(setting->param20); - feature_config[index++] = BMA4_GET_MSB(setting->param20); - feature_config[index++] = BMA4_GET_LSB(setting->param21); - feature_config[index++] = BMA4_GET_MSB(setting->param21); - feature_config[index++] = BMA4_GET_LSB(setting->param22); - feature_config[index++] = BMA4_GET_MSB(setting->param22); - feature_config[index++] = BMA4_GET_LSB(setting->param23); - feature_config[index++] = BMA4_GET_MSB(setting->param23); - feature_config[index++] = BMA4_GET_LSB(setting->param24); - feature_config[index++] = BMA4_GET_MSB(setting->param24); - feature_config[index++] = BMA4_GET_LSB(setting->param25); - feature_config[index] = BMA4_GET_MSB(setting->param25); + feature_config[index++] = BMA4_GET_LSB(setting->param1); + feature_config[index++] = BMA4_GET_MSB(setting->param1); + feature_config[index++] = BMA4_GET_LSB(setting->param2); + feature_config[index++] = BMA4_GET_MSB(setting->param2); + feature_config[index++] = BMA4_GET_LSB(setting->param3); + feature_config[index++] = BMA4_GET_MSB(setting->param3); + feature_config[index++] = BMA4_GET_LSB(setting->param4); + feature_config[index++] = BMA4_GET_MSB(setting->param4); + feature_config[index++] = BMA4_GET_LSB(setting->param5); + feature_config[index++] = BMA4_GET_MSB(setting->param5); + feature_config[index++] = BMA4_GET_LSB(setting->param6); + feature_config[index++] = BMA4_GET_MSB(setting->param6); + feature_config[index++] = BMA4_GET_LSB(setting->param7); + feature_config[index++] = BMA4_GET_MSB(setting->param7); + feature_config[index++] = BMA4_GET_LSB(setting->param8); + feature_config[index++] = BMA4_GET_MSB(setting->param8); + feature_config[index++] = BMA4_GET_LSB(setting->param9); + feature_config[index++] = BMA4_GET_MSB(setting->param9); + feature_config[index++] = BMA4_GET_LSB(setting->param10); + feature_config[index++] = BMA4_GET_MSB(setting->param10); + feature_config[index++] = BMA4_GET_LSB(setting->param11); + feature_config[index++] = BMA4_GET_MSB(setting->param11); + feature_config[index++] = BMA4_GET_LSB(setting->param12); + feature_config[index++] = BMA4_GET_MSB(setting->param12); + feature_config[index++] = BMA4_GET_LSB(setting->param13); + feature_config[index++] = BMA4_GET_MSB(setting->param13); + feature_config[index++] = BMA4_GET_LSB(setting->param14); + feature_config[index++] = BMA4_GET_MSB(setting->param14); + feature_config[index++] = BMA4_GET_LSB(setting->param15); + feature_config[index++] = BMA4_GET_MSB(setting->param15); + feature_config[index++] = BMA4_GET_LSB(setting->param16); + feature_config[index++] = BMA4_GET_MSB(setting->param16); + feature_config[index++] = BMA4_GET_LSB(setting->param17); + feature_config[index++] = BMA4_GET_MSB(setting->param17); + feature_config[index++] = BMA4_GET_LSB(setting->param18); + feature_config[index++] = BMA4_GET_MSB(setting->param18); + feature_config[index++] = BMA4_GET_LSB(setting->param19); + feature_config[index++] = BMA4_GET_MSB(setting->param19); + feature_config[index++] = BMA4_GET_LSB(setting->param20); + feature_config[index++] = BMA4_GET_MSB(setting->param20); + feature_config[index++] = BMA4_GET_LSB(setting->param21); + feature_config[index++] = BMA4_GET_MSB(setting->param21); + feature_config[index++] = BMA4_GET_LSB(setting->param22); + feature_config[index++] = BMA4_GET_MSB(setting->param22); + feature_config[index++] = BMA4_GET_LSB(setting->param23); + feature_config[index++] = BMA4_GET_MSB(setting->param23); + feature_config[index++] = BMA4_GET_LSB(setting->param24); + feature_config[index++] = BMA4_GET_MSB(setting->param24); + feature_config[index++] = BMA4_GET_LSB(setting->param25); + feature_config[index] = BMA4_GET_MSB(setting->param25); } /*! @@ -1667,29 +1667,29 @@ static void update_stepcounter_parameter(const struct bma423_stepcounter_setting */ static void extract_stepcounter_parameter(struct bma423_stepcounter_settings *setting, const uint16_t *data_p) { - setting->param1 = *(data_p++); - setting->param2 = *(data_p++); - setting->param3 = *(data_p++); - setting->param4 = *(data_p++); - setting->param5 = *(data_p++); - setting->param6 = *(data_p++); - setting->param7 = *(data_p++); - setting->param8 = *(data_p++); - setting->param9 = *(data_p++); - setting->param10 = *(data_p++); - setting->param11 = *(data_p++); - setting->param12 = *(data_p++); - setting->param13 = *(data_p++); - setting->param14 = *(data_p++); - setting->param15 = *(data_p++); - setting->param16 = *(data_p++); - setting->param17 = *(data_p++); - setting->param18 = *(data_p++); - setting->param19 = *(data_p++); - setting->param20 = *(data_p++); - setting->param21 = *(data_p++); - setting->param22 = *(data_p++); - setting->param23 = *(data_p++); - setting->param24 = *(data_p++); - setting->param25 = *data_p; -} \ No newline at end of file + setting->param1 = *(data_p++); + setting->param2 = *(data_p++); + setting->param3 = *(data_p++); + setting->param4 = *(data_p++); + setting->param5 = *(data_p++); + setting->param6 = *(data_p++); + setting->param7 = *(data_p++); + setting->param8 = *(data_p++); + setting->param9 = *(data_p++); + setting->param10 = *(data_p++); + setting->param11 = *(data_p++); + setting->param12 = *(data_p++); + setting->param13 = *(data_p++); + setting->param14 = *(data_p++); + setting->param15 = *(data_p++); + setting->param16 = *(data_p++); + setting->param17 = *(data_p++); + setting->param18 = *(data_p++); + setting->param19 = *(data_p++); + setting->param20 = *(data_p++); + setting->param21 = *(data_p++); + setting->param22 = *(data_p++); + setting->param23 = *(data_p++); + setting->param24 = *(data_p++); + setting->param25 = *data_p; +} diff --git a/src/bma423.h b/src/bma423.h index 14a3f85..2137f36 100644 --- a/src/bma423.h +++ b/src/bma423.h @@ -93,124 +93,124 @@ extern "C" { #include "bma4.h" /**\name Chip ID of BMA423 sensor */ -#define BMA423_CHIP_ID UINT8_C(0x13) +#define BMA423_CHIP_ID UINT8_C(0x13) /**\name Sensor feature size */ -#define BMA423_FEATURE_SIZE UINT8_C(64) -#define BMA423_ANYMOTION_EN_LEN UINT8_C(2) -#define BMA423_RD_WR_MIN_LEN UINT8_C(2) +#define BMA423_FEATURE_SIZE UINT8_C(64) +#define BMA423_ANYMOTION_EN_LEN UINT8_C(2) +#define BMA423_RD_WR_MIN_LEN UINT8_C(2) /**\name Feature offset address */ -#define BMA423_ANY_NO_MOTION_OFFSET UINT8_C(0x00) -#define BMA423_STEP_CNTR_OFFSET UINT8_C(0x36) -#define BMA423_STEP_CNTR_PARAM_OFFSET UINT8_C(0x04) -#define BMA423_WAKEUP_OFFSET UINT8_C(0x38) -#define BMA423_TILT_OFFSET UINT8_C(0x3A) -#define BMA423_CONFIG_ID_OFFSET UINT8_C(0x3C) -#define BMA423_AXES_REMAP_OFFSET UINT8_C(0x3E) +#define BMA423_ANY_NO_MOTION_OFFSET UINT8_C(0x00) +#define BMA423_STEP_CNTR_OFFSET UINT8_C(0x36) +#define BMA423_STEP_CNTR_PARAM_OFFSET UINT8_C(0x04) +#define BMA423_WAKEUP_OFFSET UINT8_C(0x38) +#define BMA423_TILT_OFFSET UINT8_C(0x3A) +#define BMA423_CONFIG_ID_OFFSET UINT8_C(0x3C) +#define BMA423_AXES_REMAP_OFFSET UINT8_C(0x3E) /**************************************************************/ -/**\name Remap Axes */ +/**\name Remap Axes */ /**************************************************************/ -#define BMA423_X_AXIS_MASK UINT8_C(0x03) -#define BMA423_X_AXIS_SIGN_MASK UINT8_C(0x04) -#define BMA423_Y_AXIS_MASK UINT8_C(0x18) -#define BMA423_Y_AXIS_SIGN_MASK UINT8_C(0x20) -#define BMA423_Z_AXIS_MASK UINT8_C(0xC0) -#define BMA423_Z_AXIS_SIGN_MASK UINT8_C(0x01) +#define BMA423_X_AXIS_MASK UINT8_C(0x03) +#define BMA423_X_AXIS_SIGN_MASK UINT8_C(0x04) +#define BMA423_Y_AXIS_MASK UINT8_C(0x18) +#define BMA423_Y_AXIS_SIGN_MASK UINT8_C(0x20) +#define BMA423_Z_AXIS_MASK UINT8_C(0xC0) +#define BMA423_Z_AXIS_SIGN_MASK UINT8_C(0x01) /**************************************************************/ -/**\name Step Counter & Detector */ +/**\name Step Counter & Detector */ /**************************************************************/ /**\name Step counter enable macros */ -#define BMA423_STEP_CNTR_EN_POS UINT8_C(4) -#define BMA423_STEP_CNTR_EN_MSK UINT8_C(0x10) -#define BMA423_ACTIVITY_EN_MSK UINT8_C(0x20) +#define BMA423_STEP_CNTR_EN_POS UINT8_C(4) +#define BMA423_STEP_CNTR_EN_MSK UINT8_C(0x10) +#define BMA423_ACTIVITY_EN_MSK UINT8_C(0x20) /**\name Step counter watermark macros */ -#define BMA423_STEP_CNTR_WM_MSK UINT16_C(0x03FF) +#define BMA423_STEP_CNTR_WM_MSK UINT16_C(0x03FF) /**\name Step counter reset macros */ -#define BMA423_STEP_CNTR_RST_POS UINT8_C(2) -#define BMA423_STEP_CNTR_RST_MSK UINT8_C(0x04) +#define BMA423_STEP_CNTR_RST_POS UINT8_C(2) +#define BMA423_STEP_CNTR_RST_MSK UINT8_C(0x04) /**\name Step detector enable macros */ -#define BMA423_STEP_DETECTOR_EN_POS UINT8_C(3) -#define BMA423_STEP_DETECTOR_EN_MSK UINT8_C(0x08) +#define BMA423_STEP_DETECTOR_EN_POS UINT8_C(3) +#define BMA423_STEP_DETECTOR_EN_MSK UINT8_C(0x08) /**\name Tilt enable macros */ -#define BMA423_TILT_EN_MSK UINT8_C(0x01) +#define BMA423_TILT_EN_MSK UINT8_C(0x01) /**\name Step count output length*/ -#define BMA423_STEP_CNTR_DATA_SIZE UINT16_C(4) +#define BMA423_STEP_CNTR_DATA_SIZE UINT16_C(4) /**\name Wakeup enable macros */ -#define BMA423_WAKEUP_EN_MSK UINT8_C(0x01) +#define BMA423_WAKEUP_EN_MSK UINT8_C(0x01) /**\name Wake up sensitivity macros */ -#define BMA423_WAKEUP_SENS_POS UINT8_C(1) -#define BMA423_WAKEUP_SENS_MSK UINT8_C(0x0E) +#define BMA423_WAKEUP_SENS_POS UINT8_C(1) +#define BMA423_WAKEUP_SENS_MSK UINT8_C(0x0E) /**\name Tap selection macro */ -#define BMA423_TAP_SEL_POS UINT8_C(4) -#define BMA423_TAP_SEL_MSK UINT8_C(0x10) +#define BMA423_TAP_SEL_POS UINT8_C(4) +#define BMA423_TAP_SEL_MSK UINT8_C(0x10) /**************************************************************/ -/**\name Any Motion */ +/**\name Any Motion */ /**************************************************************/ /**\name Any motion threshold macros */ -#define BMA423_ANY_NO_MOTION_THRES_POS UINT8_C(0) -#define BMA423_ANY_NO_MOTION_THRES_MSK UINT16_C(0x07FF) +#define BMA423_ANY_NO_MOTION_THRES_POS UINT8_C(0) +#define BMA423_ANY_NO_MOTION_THRES_MSK UINT16_C(0x07FF) /**\name Any motion selection macros */ -#define BMA423_ANY_NO_MOTION_SEL_POS UINT8_C(3) -#define BMA423_ANY_NO_MOTION_SEL_MSK UINT8_C(0x08) +#define BMA423_ANY_NO_MOTION_SEL_POS UINT8_C(3) +#define BMA423_ANY_NO_MOTION_SEL_MSK UINT8_C(0x08) /**\name Any motion enable macros */ -#define BMA423_ANY_NO_MOTION_AXIS_EN_POS UINT8_C(5) -#define BMA423_ANY_NO_MOTION_AXIS_EN_MSK UINT8_C(0xE0) +#define BMA423_ANY_NO_MOTION_AXIS_EN_POS UINT8_C(5) +#define BMA423_ANY_NO_MOTION_AXIS_EN_MSK UINT8_C(0xE0) /**\name Any motion duration macros */ -#define BMA423_ANY_NO_MOTION_DUR_MSK UINT16_C(0x1FFF) +#define BMA423_ANY_NO_MOTION_DUR_MSK UINT16_C(0x1FFF) /**************************************************************/ -/**\name User macros */ +/**\name User macros */ /**************************************************************/ /**\name Anymotion/Nomotion axis enable macros */ -#define BMA423_X_AXIS_EN UINT8_C(0x01) -#define BMA423_Y_AXIS_EN UINT8_C(0x02) -#define BMA423_Z_AXIS_EN UINT8_C(0x04) -#define BMA423_ALL_AXIS_EN UINT8_C(0x07) -#define BMA423_ALL_AXIS_DIS UINT8_C(0x00) +#define BMA423_X_AXIS_EN UINT8_C(0x01) +#define BMA423_Y_AXIS_EN UINT8_C(0x02) +#define BMA423_Z_AXIS_EN UINT8_C(0x04) +#define BMA423_ALL_AXIS_EN UINT8_C(0x07) +#define BMA423_ALL_AXIS_DIS UINT8_C(0x00) /**\name Feature enable macros for the sensor */ -#define BMA423_STEP_CNTR UINT8_C(0x01) +#define BMA423_STEP_CNTR UINT8_C(0x01) /**\name Below macros are mutually exclusive */ -#define BMA423_ANY_MOTION UINT8_C(0x02) -#define BMA423_NO_MOTION UINT8_C(0x04) -#define BMA423_ACTIVITY UINT8_C(0x08) -#define BMA423_TILT UINT8_C(0x10) -#define BMA423_WAKEUP UINT8_C(0x20) +#define BMA423_ANY_MOTION UINT8_C(0x02) +#define BMA423_NO_MOTION UINT8_C(0x04) +#define BMA423_ACTIVITY UINT8_C(0x08) +#define BMA423_TILT UINT8_C(0x10) +#define BMA423_WAKEUP UINT8_C(0x20) /**\name Interrupt status macros */ -#define BMA423_STEP_CNTR_INT UINT8_C(0x02) -#define BMA423_ACTIVITY_INT UINT8_C(0x04) -#define BMA423_TILT_INT UINT8_C(0x08) -#define BMA423_WAKEUP_INT UINT8_C(0x20) -#define BMA423_ANY_NO_MOTION_INT UINT8_C(0x40) -#define BMA423_ERROR_INT UINT8_C(0x80) +#define BMA423_STEP_CNTR_INT UINT8_C(0x02) +#define BMA423_ACTIVITY_INT UINT8_C(0x04) +#define BMA423_TILT_INT UINT8_C(0x08) +#define BMA423_WAKEUP_INT UINT8_C(0x20) +#define BMA423_ANY_NO_MOTION_INT UINT8_C(0x40) +#define BMA423_ERROR_INT UINT8_C(0x80) /**\name Activity recognition macros */ -#define BMA423_USER_STATIONARY UINT8_C(0x00) -#define BMA423_USER_WALKING UINT8_C(0x01) -#define BMA423_USER_RUNNING UINT8_C(0x02) -#define BMA423_STATE_INVALID UINT8_C(0x03) +#define BMA423_USER_STATIONARY UINT8_C(0x00) +#define BMA423_USER_WALKING UINT8_C(0x01) +#define BMA423_USER_RUNNING UINT8_C(0x02) +#define BMA423_STATE_INVALID UINT8_C(0x03) /**\name Configuration selection macros */ -#define BMA423_PHONE_CONFIG UINT8_C(0x00) -#define BMA423_WRIST_CONFIG UINT8_C(0x01) +#define BMA423_PHONE_CONFIG UINT8_C(0x00) +#define BMA423_WRIST_CONFIG UINT8_C(0x01) /**\name Step counter parameter setting(1-25) for phone */ #define BMA423_PHONE_SC_PARAM_1 UINT16_C(0x132) @@ -270,298 +270,298 @@ extern "C" { * @brief Any motion configuration */ struct bma423_anymotion_config { - /*! Expressed in 50 Hz samples (20 ms) */ - uint16_t duration; - /*! Threshold value for Any-motion / No-motion detection in - 5.11g format */ - uint16_t threshold; - /*! Indicates if No-motion or Any-motion is selected */ - uint8_t nomotion_sel; + /*! Expressed in 50 Hz samples (20 ms) */ + uint16_t duration; + /*! Threshold value for Any-motion / No-motion detection in + 5.11g format */ + uint16_t threshold; + /*! Indicates if No-motion or Any-motion is selected */ + uint8_t nomotion_sel; }; /*! * @brief Axes remapping configuration */ struct bma423_axes_remap { - uint8_t x_axis; - uint8_t x_axis_sign; - uint8_t y_axis; - uint8_t y_axis_sign; - uint8_t z_axis; - uint8_t z_axis_sign; + uint8_t x_axis; + uint8_t x_axis_sign; + uint8_t y_axis; + uint8_t y_axis_sign; + uint8_t z_axis; + uint8_t z_axis_sign; }; /*! * @brief Step counter param settings */ struct bma423_stepcounter_settings { - /*! Step Counter param 1 */ - uint16_t param1; - /*! Step Counter param 2 */ - uint16_t param2; - /*! Step Counter param 3 */ - uint16_t param3; - /*! Step Counter param 4 */ - uint16_t param4; - /*! Step Counter param 5 */ - uint16_t param5; - /*! Step Counter param 6 */ - uint16_t param6; - /*! Step Counter param 7 */ - uint16_t param7; - /*! Step Counter param 8 */ - uint16_t param8; - /*! Step Counter param 9 */ - uint16_t param9; - /*! Step Counter param 10 */ - uint16_t param10; - /*! Step Counter param 11 */ - uint16_t param11; - /*! Step Counter param 12 */ - uint16_t param12; - /*! Step Counter param 13 */ - uint16_t param13; - /*! Step Counter param 14 */ - uint16_t param14; - /*! Step Counter param 15 */ - uint16_t param15; - /*! Step Counter param 16 */ - uint16_t param16; - /*! Step Counter param 17 */ - uint16_t param17; - /*! Step Counter param 18 */ - uint16_t param18; - /*! Step Counter param 19 */ - uint16_t param19; - /*! Step Counter param 20 */ - uint16_t param20; - /*! Step Counter param 21 */ - uint16_t param21; - /*! Step Counter param 22 */ - uint16_t param22; - /*! Step Counter param 23 */ - uint16_t param23; - /*! Step Counter param 24 */ - uint16_t param24; - /*! Step Counter param 25 */ - uint16_t param25; + /*! Step Counter param 1 */ + uint16_t param1; + /*! Step Counter param 2 */ + uint16_t param2; + /*! Step Counter param 3 */ + uint16_t param3; + /*! Step Counter param 4 */ + uint16_t param4; + /*! Step Counter param 5 */ + uint16_t param5; + /*! Step Counter param 6 */ + uint16_t param6; + /*! Step Counter param 7 */ + uint16_t param7; + /*! Step Counter param 8 */ + uint16_t param8; + /*! Step Counter param 9 */ + uint16_t param9; + /*! Step Counter param 10 */ + uint16_t param10; + /*! Step Counter param 11 */ + uint16_t param11; + /*! Step Counter param 12 */ + uint16_t param12; + /*! Step Counter param 13 */ + uint16_t param13; + /*! Step Counter param 14 */ + uint16_t param14; + /*! Step Counter param 15 */ + uint16_t param15; + /*! Step Counter param 16 */ + uint16_t param16; + /*! Step Counter param 17 */ + uint16_t param17; + /*! Step Counter param 18 */ + uint16_t param18; + /*! Step Counter param 19 */ + uint16_t param19; + /*! Step Counter param 20 */ + uint16_t param20; + /*! Step Counter param 21 */ + uint16_t param21; + /*! Step Counter param 22 */ + uint16_t param22; + /*! Step Counter param 23 */ + uint16_t param23; + /*! Step Counter param 24 */ + uint16_t param24; + /*! Step Counter param 25 */ + uint16_t param25; }; /*! - * @brief This API is the entry point. - * Call this API before using all other APIs. - * This API reads the chip-id of the sensor and sets the resolution. + * @brief This API is the entry point. + * Call this API before using all other APIs. + * This API reads the chip-id of the sensor and sets the resolution. * - * @param[in,out] dev : Structure instance of bma4_dev + * @param[in,out] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_init(struct bma4_dev *dev); /*! - * @brief This API is used to upload the config file to enable - * the features of the sensor. + * @brief This API is used to upload the config file to enable + * the features of the sensor. * - * @param[in] dev : Structure instance of bma4_dev. + * @param[in] dev : Structure instance of bma4_dev. * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_write_config_file(struct bma4_dev *dev); /*! - * @brief This API is used to get the configuration id of the sensor. + * @brief This API is used to get the configuration id of the sensor. * - * @param[out] config_id : Pointer variable used to store - * the configuration id. - * @param[in] dev : Structure instance of bma4_dev. + * @param[out] config_id : Pointer variable used to store + * the configuration id. + * @param[in] dev : Structure instance of bma4_dev. * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_get_config_id(uint16_t *config_id, struct bma4_dev *dev); /*! - * @brief This API sets/unsets the user provided interrupt to either - * interrupt pin1 or pin2 in the sensor. + * @brief This API sets/unsets the user provided interrupt to either + * interrupt pin1 or pin2 in the sensor. * - * @param[in] int_line: Variable to select either interrupt pin1 or pin2. + * @param[in] int_line: Variable to select either interrupt pin1 or pin2. * int_line | Macros * ------------|------------------- - * 0 | BMA4_INTR1_MAP - * 1 | BMA4_INTR2_MAP - * @param[in] int_map : Variable to specify the interrupts. - * @param[in] enable : Variable to specify mapping or unmapping of - * interrupts. - * enable | Macros + * 0 | BMA4_INTR1_MAP + * 1 | BMA4_INTR2_MAP + * @param[in] int_map : Variable to specify the interrupts. + * @param[in] enable : Variable to specify mapping or unmapping of + * interrupts. + * enable | Macros * --------------------|------------------- - * 0x00 | BMA4_DISABLE - * 0x01 | BMA4_ENABLE - * @param[in] dev : Structure instance of bma4_dev. + * 0x00 | BMA4_DISABLE + * 0x01 | BMA4_ENABLE + * @param[in] dev : Structure instance of bma4_dev. * - * @note Below macros specify the interrupts. - * Feature Interrupts - * - BMA423_STEP_CNTR_INT - * - BMA423_ACTIVITY_INT - * - BMA423_TILT_INT - * - BMA423_WAKEUP_INT - * - BMA423_ANY_NO_MOTION_INT - * - BMA423_ERROR_INT + * @note Below macros specify the interrupts. + * Feature Interrupts + * - BMA423_STEP_CNTR_INT + * - BMA423_ACTIVITY_INT + * - BMA423_TILT_INT + * - BMA423_WAKEUP_INT + * - BMA423_ANY_NO_MOTION_INT + * - BMA423_ERROR_INT * - * Hardware Interrupts - * - BMA4_FIFO_FULL_INT - * - BMA4_FIFO_WM_INT - * - BMA4_DATA_RDY_INT + * Hardware Interrupts + * - BMA4_FIFO_FULL_INT + * - BMA4_FIFO_WM_INT + * - BMA4_DATA_RDY_INT * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_map_interrupt(uint8_t int_line, uint16_t int_map, uint8_t enable, struct bma4_dev *dev); /*! - * @brief This API reads the bma423 interrupt status from the sensor. + * @brief This API reads the bma423 interrupt status from the sensor. * - * @param[out] int_status : Variable to store the interrupt status - * read from the sensor. - * @param[in] dev : Structure instance of bma4_dev. + * @param[out] int_status : Variable to store the interrupt status + * read from the sensor. + * @param[in] dev : Structure instance of bma4_dev. * - * @note Below macros are used to check the interrupt status. - * Feature Interrupts + * @note Below macros are used to check the interrupt status. + * Feature Interrupts * - * - BMA423_STEP_CNTR_INT - * - BMA423_ACTIVITY_INT - * - BMA423_TILT_INT - * - BMA423_WAKEUP_INT - * - BMA423_ANY_NO_MOTION_INT - * - BMA423_ERROR_INT + * - BMA423_STEP_CNTR_INT + * - BMA423_ACTIVITY_INT + * - BMA423_TILT_INT + * - BMA423_WAKEUP_INT + * - BMA423_ANY_NO_MOTION_INT + * - BMA423_ERROR_INT * * - * Hardware Interrupts - * - BMA4_FIFO_FULL_INT - * - BMA4_FIFO_WM_INT - * - BMA4_MAG_DATA_RDY_INT - * - BMA4_ACCEL_DATA_RDY_INT + * Hardware Interrupts + * - BMA4_FIFO_FULL_INT + * - BMA4_FIFO_WM_INT + * - BMA4_MAG_DATA_RDY_INT + * - BMA4_ACCEL_DATA_RDY_INT * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_read_int_status(uint16_t *int_status, struct bma4_dev *dev); /*! - * @brief This API enables/disables the features of the sensor. + * @brief This API enables/disables the features of the sensor. * - * @param[in] feature : Variable to specify the features - * which are to be set in bma423 sensor. - * @param[in] enable : Variable which specifies whether to enable or - * disable the features in the bma423 sensor - * enable | Macros + * @param[in] feature : Variable to specify the features + * which are to be set in bma423 sensor. + * @param[in] enable : Variable which specifies whether to enable or + * disable the features in the bma423 sensor + * enable | Macros * --------------------|------------------- - * 0x00 | BMA4_DISABLE - * 0x01 | BMA4_ENABLE - * @param[in] dev : Structure instance of bma4_dev. + * 0x00 | BMA4_DISABLE + * 0x01 | BMA4_ENABLE + * @param[in] dev : Structure instance of bma4_dev. * - * @note User should use the below macros to enable or disable the - * features of bma423 sensor - * - BMA423_STEP_CNTR - * - BMA423_ANY_MOTION (or) BMA423_NO_MOTION - * - BMA423_ACTIVITY - * - BMA423_WAKEUP - * - BMA423_TILT + * @note User should use the below macros to enable or disable the + * features of bma423 sensor + * - BMA423_STEP_CNTR + * - BMA423_ANY_MOTION (or) BMA423_NO_MOTION + * - BMA423_ACTIVITY + * - BMA423_WAKEUP + * - BMA423_TILT * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_feature_enable(uint8_t feature, uint8_t enable, struct bma4_dev *dev); /*! - * @brief This API performs x, y and z axis remapping in the sensor. + * @brief This API performs x, y and z axis remapping in the sensor. * - * @param[in] remap_data : Pointer to store axes remapping data. - * @param[in] dev : Structure instance of bma4_dev + * @param[in] remap_data : Pointer to store axes remapping data. + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_set_remap_axes(const struct bma423_axes_remap *remap_data, struct bma4_dev *dev); /*! - * @brief This API reads the x, y and z axis remap data from the sensor. + * @brief This API reads the x, y and z axis remap data from the sensor. * - * @param[out] remap_data : Pointer to store axis remap data which is read - * from the bma423 sensor. - * @param[in] dev : Structure instance of bma4_dev + * @param[out] remap_data : Pointer to store axis remap data which is read + * from the bma423 sensor. + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_get_remap_axes(struct bma423_axes_remap *remap_data, struct bma4_dev *dev); /*! - * @brief This API sets the watermark level for step counter - * interrupt in the sensor. + * @brief This API sets the watermark level for step counter + * interrupt in the sensor. * - * @param[in] step_counter_wm : Variable which specifies watermark level - * count - * @note Valid values are from 1 to 1023 - * @note Value 0 is used for step detector interrupt - * @param[in] dev : Structure instance of bma4_dev + * @param[in] step_counter_wm : Variable which specifies watermark level + * count + * @note Valid values are from 1 to 1023 + * @note Value 0 is used for step detector interrupt + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_step_counter_set_watermark(uint16_t step_counter_wm, struct bma4_dev *dev); /*! - * @brief This API gets the water mark level set for step counter interrupt - * in the sensor + * @brief This API gets the water mark level set for step counter interrupt + * in the sensor * - * @param[out] step_counter_wm : Pointer variable which stores - * the water mark level read from the sensor. - * @note valid values are from 1 to 1023 - * @note value 0 is used for step detector interrupt - * @param[in] dev : Structure instance of bma4_dev + * @param[out] step_counter_wm : Pointer variable which stores + * the water mark level read from the sensor. + * @note valid values are from 1 to 1023 + * @note value 0 is used for step detector interrupt + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_step_counter_get_watermark(uint16_t *step_counter_wm, struct bma4_dev *dev); /*! - * @brief This API resets the counted steps of step counter. + * @brief This API resets the counted steps of step counter. * - * @param[in] dev : structure instance of bma4_dev + * @param[in] dev : structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_reset_step_counter(struct bma4_dev *dev); /*! - * @brief This API gets the number of counted steps of the step counter - * feature from the sensor. + * @brief This API gets the number of counted steps of the step counter + * feature from the sensor. * * @param[out] step_count : Pointer variable which stores counted steps - * read from the sensor. - * @param[in] dev : Structure instance of bma4_dev + * read from the sensor. + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_step_counter_output(uint32_t *step_count, struct bma4_dev *dev); @@ -602,56 +602,56 @@ uint16_t bma423_activity_output(uint8_t *activity, struct bma4_dev *dev); uint16_t bma423_select_platform(uint8_t platform, struct bma4_dev *dev); /*! - * @brief This API gets the parameter1 to parameter7 settings of the - * step counter feature. + * @brief This API gets the parameter1 to parameter7 settings of the + * step counter feature. * - * @param[out] setting : Pointer to structure variable which stores the - * parameter1 to parameter7 read from the sensor. - * @param[in] dev : Structure instance of bma4_dev + * @param[out] setting : Pointer to structure variable which stores the + * parameter1 to parameter7 read from the sensor. + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_stepcounter_get_parameter(struct bma423_stepcounter_settings *setting, struct bma4_dev *dev); /*! - * @brief This API sets the parameter1 to parameter7 settings of the - * step counter feature in the sensor. + * @brief This API sets the parameter1 to parameter7 settings of the + * step counter feature in the sensor. * - * @param[in] setting : Pointer to structure variable which stores the - * parameter1 to parameter7 settings read from the sensor. - * @param[in] dev : Structure instance of bma4_dev + * @param[in] setting : Pointer to structure variable which stores the + * parameter1 to parameter7 settings read from the sensor. + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_stepcounter_set_parameter(const struct bma423_stepcounter_settings *setting, struct bma4_dev *dev); /*! - * @brief This API enables or disables the step detector feature in the - * sensor. + * @brief This API enables or disables the step detector feature in the + * sensor. * - * @param[in] enable : Variable used to enable or disable step detector - * enable | Macros + * @param[in] enable : Variable used to enable or disable step detector + * enable | Macros * --------------------|------------------- - * 0x00 | BMA4_DISABLE - * 0x01 | BMA4_ENABLE - * @param[in] dev : Structure instance of bma4_dev + * 0x00 | BMA4_DISABLE + * 0x01 | BMA4_ENABLE + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_step_detector_enable(uint8_t enable, struct bma4_dev *dev); /*! - * @brief This API enables the any motion feature according to the axis - * set by the user in the sensor. + * @brief This API enables the any motion feature according to the axis + * set by the user in the sensor. * - * @param[in] axis : Variable to specify the axis of the any motion feature - * to be enabled in the sensor. + * @param[in] axis : Variable to specify the axis of the any motion feature + * to be enabled in the sensor. * Value | Axis * ---------|------------------------- * 0x00 | BMA423_ALL_AXIS_DIS @@ -659,20 +659,20 @@ uint16_t bma423_step_detector_enable(uint8_t enable, struct bma4_dev *dev); * 0x02 | BMA423_Y_AXIS_EN * 0x04 | BMA423_Z_AXIS_EN * 0x07 | BMA423_ALL_AXIS_EN - * @param[in] dev : Structure instance of bma4_dev + * @param[in] dev : Structure instance of bma4_dev * - * @return result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_anymotion_enable_axis(uint8_t axis, struct bma4_dev *dev); -/*! @brief This API sets the configuration of Any motion feature in - * the sensor. +/*! @brief This API sets the configuration of Any motion feature in + * the sensor. * - * @param[in] any_motion : Pointer to structure variable to specify - * the any motion feature settings. - * Structure members are provided in the table below + * @param[in] any_motion : Pointer to structure variable to specify + * the any motion feature settings. + * Structure members are provided in the table below *@verbatim * ------------------------------------------------------------------------- * Structure parameters | Description @@ -697,20 +697,20 @@ uint16_t bma423_anymotion_enable_axis(uint8_t axis, struct bma4_dev *dev); * | default value is 0 Any-motion. * ------------------------------------------------------------------------- *@endverbatim - * @param[in] dev : Structure instance of bma4_dev + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_set_any_motion_config(const struct bma423_anymotion_config *any_motion, struct bma4_dev *dev); -/*! @brief This API gets the configuration of any motion feature from - * the sensor. +/*! @brief This API gets the configuration of any motion feature from + * the sensor. * - * @param[out] any_motion : Pointer to structure variable used to store - * the any motion feature settings read from the sensor. - * Structure members are provided in the table below + * @param[out] any_motion : Pointer to structure variable used to store + * the any motion feature settings read from the sensor. + * Structure members are provided in the table below *@verbatim * ------------------------------------------------------------------------- * Structure parameters | Description @@ -735,64 +735,64 @@ uint16_t bma423_set_any_motion_config(const struct bma423_anymotion_config *any_ * | default value is 0 Any-motion. * ------------------------------------------------------------------------- *@endverbatim - * @param[in] dev : Structure instance of bma4_dev + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_get_any_motion_config(struct bma423_anymotion_config *any_motion, struct bma4_dev *dev); /*! - * @brief This API sets the sensitivity of wake up feature in the sensor + * @brief This API sets the sensitivity of wake up feature in the sensor * - * @param[in] sensitivity : Variable used to specify the sensitivity of the - * Wake up feature. - * Value | Sensitivity - * --------|------------------------- - * 0x00 | MOST SENSITIVE - * 0x07 | LEAST SENSITIVE - * @param[in] dev : Structure instance of bma4_dev + * @param[in] sensitivity : Variable used to specify the sensitivity of the + * Wake up feature. + * Value | Sensitivity + * --------|------------------------- + * 0x00 | MOST SENSITIVE + * 0x07 | LEAST SENSITIVE + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity, struct bma4_dev *dev); /*! - * @brief This API gets the sensitivity of wake up feature in the sensor + * @brief This API gets the sensitivity of wake up feature in the sensor * - * @param[out] sensitivity : Pointer variable which stores the sensitivity - * value read from the sensor. - * Value | Sensitivity - * --------|------------------------- - * 0x00 | MOST SENSITIVE - * 0x07 | LEAST SENSITIVE - * @param[in] dev : Structure instance of bma4_dev + * @param[out] sensitivity : Pointer variable which stores the sensitivity + * value read from the sensor. + * Value | Sensitivity + * --------|------------------------- + * 0x00 | MOST SENSITIVE + * 0x07 | LEAST SENSITIVE + * @param[in] dev : Structure instance of bma4_dev * - * @return Result of API execution status - * @retval 0 -> Success - * @retval Any non zero value -> Fail + * @return Result of API execution status + * @retval 0 -> Success + * @retval Any non zero value -> Fail */ uint16_t bma423_wakeup_get_sensitivity(uint8_t *sensitivity, struct bma4_dev *dev); /*! - * @brief This API is used to select single/double tap - * feature in the sensor + * @brief This API is used to select single/double tap + * feature in the sensor * - * @param tap_select : Variable used to specify the single or - * double tap selection in the sensor + * @param tap_select : Variable used to specify the single or + * double tap selection in the sensor * tap_select | description * ------------|------------------------ * 0x00 | Double tap selected * 0x01 | single tap selected * - * @param dev : Structure instance of bma4_dev + * @param dev : Structure instance of bma4_dev * - * @return results of stream_transfer operation - * @retval 0 -> Success - * @retval Any positive value mentioned in ERROR CODES -> Fail + * @return results of stream_transfer operation + * @retval 0 -> Success + * @retval Any positive value mentioned in ERROR CODES -> Fail * */ uint16_t bma423_tap_selection(const uint8_t tap_select, struct bma4_dev *dev); @@ -801,4 +801,4 @@ uint16_t bma423_tap_selection(const uint8_t tap_select, struct bma4_dev *dev); } #endif /*End of CPP guard */ -#endif /*End of header guard macro */ \ No newline at end of file +#endif /*End of header guard macro */ diff --git a/src/bma4_defs.h b/src/bma4_defs.h index 34e421b..2c4295b 100644 --- a/src/bma4_defs.h +++ b/src/bma4_defs.h @@ -85,7 +85,7 @@ /*! \file bma4_defs.h \brief Sensor Driver for BMA4 family of sensors */ #ifndef BMA4_DEFS_H__ -#define BMA4_DEFS_H__ +#define BMA4_DEFS_H__ /*********************************************************************/ /**\ header files */ #ifdef __KERNEL__ @@ -101,9 +101,9 @@ /* #if (LONG_MAX) > 0x7fffffff -#define __have_long64 1 +#define __have_long64 1 #elif (LONG_MAX) == 0x7fffffff -#define __have_long32 1 +#define __have_long32 1 #endif */ @@ -146,505 +146,508 @@ #endif /**\name CHIP ID ADDRESS*/ -#define BMA4_CHIP_ID_ADDR UINT8_C(0x00) +#define BMA4_CHIP_ID_ADDR UINT8_C(0x00) +/**\name RESET REGISTER */ +#define BMA4_RESET_ADDR UINT8_C(0xB6) +#define BMA4_RESET_SET_MASK UINT8_C(0x7E) /**\name ERROR STATUS*/ -#define BMA4_ERROR_ADDR UINT8_C(0X02) +#define BMA4_ERROR_ADDR UINT8_C(0X02) /**\name STATUS REGISTER FOR SENSOR STATUS FLAG*/ -#define BMA4_STATUS_ADDR UINT8_C(0X03) +#define BMA4_STATUS_ADDR UINT8_C(0X03) /**\name AUX/ACCEL DATA BASE ADDRESS REGISTERS*/ -#define BMA4_DATA_0_ADDR UINT8_C(0X0A) -#define BMA4_DATA_8_ADDR UINT8_C(0X12) +#define BMA4_DATA_0_ADDR UINT8_C(0X0A) +#define BMA4_DATA_8_ADDR UINT8_C(0X12) /**\name SENSOR TIME REGISTERS*/ -#define BMA4_SENSORTIME_0_ADDR UINT8_C(0X18) +#define BMA4_SENSORTIME_0_ADDR UINT8_C(0X18) /**\name INTERRUPT/FEATURE STATUS REGISTERS*/ -#define BMA4_INT_STAT_0_ADDR UINT8_C(0X1C) +#define BMA4_INT_STAT_0_ADDR UINT8_C(0X1C) /**\name INTERRUPT/FEATURE STATUS REGISTERS*/ -#define BMA4_INT_STAT_1_ADDR UINT8_C(0X1D) +#define BMA4_INT_STAT_1_ADDR UINT8_C(0X1D) /**\name TEMPERATURE REGISTERS*/ -#define BMA4_TEMPERATURE_ADDR UINT8_C(0X22) +#define BMA4_TEMPERATURE_ADDR UINT8_C(0X22) /**\name FIFO REGISTERS*/ -#define BMA4_FIFO_LENGTH_0_ADDR UINT8_C(0X24) -#define BMA4_FIFO_DATA_ADDR UINT8_C(0X26) +#define BMA4_FIFO_LENGTH_0_ADDR UINT8_C(0X24) +#define BMA4_FIFO_DATA_ADDR UINT8_C(0X26) /**\name ACCEL CONFIG REGISTERS*/ -#define BMA4_ACCEL_CONFIG_ADDR UINT8_C(0X40) +#define BMA4_ACCEL_CONFIG_ADDR UINT8_C(0X40) /**\name ACCEL RANGE ADDRESS*/ -#define BMA4_ACCEL_RANGE_ADDR UINT8_C(0X41) +#define BMA4_ACCEL_RANGE_ADDR UINT8_C(0X41) /**\name AUX CONFIG REGISTERS*/ -#define BMA4_AUX_CONFIG_ADDR UINT8_C(0X44) +#define BMA4_AUX_CONFIG_ADDR UINT8_C(0X44) /**\name FIFO DOWN SAMPLING REGISTER ADDRESS FOR ACCEL*/ -#define BMA4_FIFO_DOWN_ADDR UINT8_C(0X45) +#define BMA4_FIFO_DOWN_ADDR UINT8_C(0X45) /**\name FIFO WATERMARK REGISTER ADDRESS*/ -#define BMA4_FIFO_WTM_0_ADDR UINT8_C(0X46) +#define BMA4_FIFO_WTM_0_ADDR UINT8_C(0X46) /**\name FIFO CONFIG REGISTERS*/ -#define BMA4_FIFO_CONFIG_0_ADDR UINT8_C(0X48) -#define BMA4_FIFO_CONFIG_1_ADDR UINT8_C(0X49) +#define BMA4_FIFO_CONFIG_0_ADDR UINT8_C(0X48) +#define BMA4_FIFO_CONFIG_1_ADDR UINT8_C(0X49) /**\name MAG INTERFACE REGISTERS*/ -#define BMA4_AUX_DEV_ID_ADDR UINT8_C(0X4B) -#define BMA4_AUX_IF_CONF_ADDR UINT8_C(0X4C) -#define BMA4_AUX_RD_ADDR UINT8_C(0X4D) -#define BMA4_AUX_WR_ADDR UINT8_C(0X4E) -#define BMA4_AUX_WR_DATA_ADDR UINT8_C(0X4F) +#define BMA4_AUX_DEV_ID_ADDR UINT8_C(0X4B) +#define BMA4_AUX_IF_CONF_ADDR UINT8_C(0X4C) +#define BMA4_AUX_RD_ADDR UINT8_C(0X4D) +#define BMA4_AUX_WR_ADDR UINT8_C(0X4E) +#define BMA4_AUX_WR_DATA_ADDR UINT8_C(0X4F) /**\name INTERRUPT ENABLE REGISTERS*/ -#define BMA4_INT1_IO_CTRL_ADDR UINT8_C(0X53) -#define BMA4_INT2_IO_CTRL_ADDR UINT8_C(0X54) +#define BMA4_INT1_IO_CTRL_ADDR UINT8_C(0X53) +#define BMA4_INT2_IO_CTRL_ADDR UINT8_C(0X54) /**\name LATCH DURATION REGISTERS*/ -#define BMA4_INTR_LATCH_ADDR UINT8_C(0X55) +#define BMA4_INTR_LATCH_ADDR UINT8_C(0X55) /**\name MAP INTERRUPT 1 and 2 REGISTERS*/ -#define BMA4_INT_MAP_1_ADDR UINT8_C(0X56) -#define BMA4_INT_MAP_2_ADDR UINT8_C(0X57) -#define BMA4_INT_MAP_DATA_ADDR UINT8_C(0x58) -#define BMA4_INIT_CTRL_ADDR UINT8_C(0x59) +#define BMA4_INT_MAP_1_ADDR UINT8_C(0X56) +#define BMA4_INT_MAP_2_ADDR UINT8_C(0X57) +#define BMA4_INT_MAP_DATA_ADDR UINT8_C(0x58) +#define BMA4_INIT_CTRL_ADDR UINT8_C(0x59) /**\name FEATURE CONFIG RELATED */ -#define BMA4_RESERVED_REG_5B_ADDR UINT8_C(0x5B) -#define BMA4_RESERVED_REG_5C_ADDR UINT8_C(0x5C) -#define BMA4_FEATURE_CONFIG_ADDR UINT8_C(0x5E) -#define BMA4_INTERNAL_ERROR UINT8_C(0x5F) +#define BMA4_RESERVED_REG_5B_ADDR UINT8_C(0x5B) +#define BMA4_RESERVED_REG_5C_ADDR UINT8_C(0x5C) +#define BMA4_FEATURE_CONFIG_ADDR UINT8_C(0x5E) +#define BMA4_INTERNAL_ERROR UINT8_C(0x5F) /**\name SERIAL INTERFACE SETTINGS REGISTER*/ -#define BMA4_IF_CONFIG_ADDR UINT8_C(0X6B) +#define BMA4_IF_CONFIG_ADDR UINT8_C(0X6B) /**\name SELF_TEST REGISTER*/ -#define BMA4_ACC_SELF_TEST_ADDR UINT8_C(0X6D) +#define BMA4_ACC_SELF_TEST_ADDR UINT8_C(0X6D) /**\name SPI,I2C SELECTION REGISTER*/ -#define BMA4_NV_CONFIG_ADDR UINT8_C(0x70) +#define BMA4_NV_CONFIG_ADDR UINT8_C(0x70) /**\name ACCEL OFFSET REGISTERS*/ -#define BMA4_OFFSET_0_ADDR UINT8_C(0X71) -#define BMA4_OFFSET_1_ADDR UINT8_C(0X72) -#define BMA4_OFFSET_2_ADDR UINT8_C(0X73) +#define BMA4_OFFSET_0_ADDR UINT8_C(0X71) +#define BMA4_OFFSET_1_ADDR UINT8_C(0X72) +#define BMA4_OFFSET_2_ADDR UINT8_C(0X73) /**\name POWER_CTRL REGISTER*/ -#define BMA4_POWER_CONF_ADDR UINT8_C(0x7C) -#define BMA4_POWER_CTRL_ADDR UINT8_C(0x7D) +#define BMA4_POWER_CONF_ADDR UINT8_C(0x7C) +#define BMA4_POWER_CTRL_ADDR UINT8_C(0x7D) /**\name COMMAND REGISTER*/ -#define BMA4_CMD_ADDR UINT8_C(0X7E) +#define BMA4_CMD_ADDR UINT8_C(0X7E) /**\name GPIO REGISTERS*/ -#define BMA4_STEP_CNT_OUT_0_ADDR UINT8_C(0x1E) -#define BMA4_HIGH_G_OUT_ADDR UINT8_C(0x1F) -#define BMA4_ACTIVITY_OUT_ADDR UINT8_C(0x27) -#define BMA4_ORIENTATION_OUT_ADDR UINT8_C(0x28) -#define BMA4_INTERNAL_STAT UINT8_C(0x2A) +#define BMA4_STEP_CNT_OUT_0_ADDR UINT8_C(0x1E) +#define BMA4_HIGH_G_OUT_ADDR UINT8_C(0x1F) +#define BMA4_ACTIVITY_OUT_ADDR UINT8_C(0x27) +#define BMA4_ORIENTATION_OUT_ADDR UINT8_C(0x28) +#define BMA4_INTERNAL_STAT UINT8_C(0x2A) /*! * @brief Block size for config write */ -#define BMA4_BLOCK_SIZE UINT8_C(32) +#define BMA4_BLOCK_SIZE UINT8_C(32) /**\name I2C slave address */ -#define BMA4_I2C_ADDR_PRIMARY UINT8_C(0x18) -#define BMA4_I2C_ADDR_SECONDARY UINT8_C(0x19) +#define BMA4_I2C_ADDR_PRIMARY UINT8_C(0x18) +#define BMA4_I2C_ADDR_SECONDARY UINT8_C(0x19) #define BMA4_I2C_BMM150_ADDR UINT8_C(0x10) /**\name Interface selection macro */ -#define BMA4_SPI_INTERFACE UINT8_C(1) -#define BMA4_I2C_INTERFACE UINT8_C(2) +#define BMA4_SPI_INTERFACE UINT8_C(1) +#define BMA4_I2C_INTERFACE UINT8_C(2) /**\name Interface selection macro */ -#define BMA4_SPI_WR_MASK UINT8_C(0x7F) -#define BMA4_SPI_RD_MASK UINT8_C(0x80) +#define BMA4_SPI_WR_MASK UINT8_C(0x7F) +#define BMA4_SPI_RD_MASK UINT8_C(0x80) /**\name Chip ID macros */ -#define BMA4_CHIP_ID_MIN UINT8_C(0x10) -#define BMA4_CHIP_ID_MAX UINT8_C(0x15) +#define BMA4_CHIP_ID_MIN UINT8_C(0x10) +#define BMA4_CHIP_ID_MAX UINT8_C(0x15) /**\name Auxiliary sensor selection macro */ -#define BMM150_SENSOR UINT8_C(1) -#define AKM9916_SENSOR UINT8_C(2) -#define BMA4_ASIC_INITIALIZED UINT8_C(0x01) +#define BMM150_SENSOR UINT8_C(1) +#define AKM9916_SENSOR UINT8_C(2) +#define BMA4_ASIC_INITIALIZED UINT8_C(0x01) /**\name Auxiliary sensor chip id macros */ #define BMM150_CHIP_ID UINT8_C(0x32) /**\name Auxiliary sensor other macros */ #define BMM150_POWER_CONTROL_REG UINT8_C(0x4B) -#define BMM150_POWER_MODE_REG UINT8_C(0x4C) +#define BMM150_POWER_MODE_REG UINT8_C(0x4C) -/**\name CONSTANTS */ -#define BMA4_FIFO_CONFIG_LENGTH UINT8_C(2) -#define BMA4_ACCEL_CONFIG_LENGTH UINT8_C(2) -#define BMA4_FIFO_WM_LENGTH UINT8_C(2) -#define BMA4_CONFIG_STREAM_SIZE UINT16_C(6144) -#define BMA4_NON_LATCH_MODE UINT8_C(0) -#define BMA4_LATCH_MODE UINT8_C(1) -#define BMA4_OPEN_DRAIN UINT8_C(1) -#define BMA4_PUSH_PULL UINT8_C(0) -#define BMA4_ACTIVE_HIGH UINT8_C(1) -#define BMA4_ACTIVE_LOW UINT8_C(0) -#define BMA4_EDGE_TRIGGER UINT8_C(1) -#define BMA4_LEVEL_TRIGGER UINT8_C(0) -#define BMA4_OUTPUT_ENABLE UINT8_C(1) -#define BMA4_OUTPUT_DISABLE UINT8_C(0) -#define BMA4_INPUT_ENABLE UINT8_C(1) -#define BMA4_INPUT_DISABLE UINT8_C(0) +/**\name CONSTANTS */ +#define BMA4_FIFO_CONFIG_LENGTH UINT8_C(2) +#define BMA4_ACCEL_CONFIG_LENGTH UINT8_C(2) +#define BMA4_FIFO_WM_LENGTH UINT8_C(2) +#define BMA4_CONFIG_STREAM_SIZE UINT16_C(6144) +#define BMA4_NON_LATCH_MODE UINT8_C(0) +#define BMA4_LATCH_MODE UINT8_C(1) +#define BMA4_OPEN_DRAIN UINT8_C(1) +#define BMA4_PUSH_PULL UINT8_C(0) +#define BMA4_ACTIVE_HIGH UINT8_C(1) +#define BMA4_ACTIVE_LOW UINT8_C(0) +#define BMA4_EDGE_TRIGGER UINT8_C(1) +#define BMA4_LEVEL_TRIGGER UINT8_C(0) +#define BMA4_OUTPUT_ENABLE UINT8_C(1) +#define BMA4_OUTPUT_DISABLE UINT8_C(0) +#define BMA4_INPUT_ENABLE UINT8_C(1) +#define BMA4_INPUT_DISABLE UINT8_C(0) /**\name ACCEL RANGE CHECK*/ -#define BMA4_ACCEL_RANGE_2G UINT8_C(0) -#define BMA4_ACCEL_RANGE_4G UINT8_C(1) -#define BMA4_ACCEL_RANGE_8G UINT8_C(2) -#define BMA4_ACCEL_RANGE_16G UINT8_C(3) +#define BMA4_ACCEL_RANGE_2G UINT8_C(0) +#define BMA4_ACCEL_RANGE_4G UINT8_C(1) +#define BMA4_ACCEL_RANGE_8G UINT8_C(2) +#define BMA4_ACCEL_RANGE_16G UINT8_C(3) /**\name CONDITION CHECK FOR READING AND WRTING DATA*/ -#define BMA4_MAX_VALUE_FIFO_FILTER UINT8_C(1) -#define BMA4_MAX_VALUE_SPI3 UINT8_C(1) -#define BMA4_MAX_VALUE_SELFTEST_AMP UINT8_C(1) -#define BMA4_MAX_IF_MODE UINT8_C(3) -#define BMA4_MAX_VALUE_SELFTEST_SIGN UINT8_C(1) +#define BMA4_MAX_VALUE_FIFO_FILTER UINT8_C(1) +#define BMA4_MAX_VALUE_SPI3 UINT8_C(1) +#define BMA4_MAX_VALUE_SELFTEST_AMP UINT8_C(1) +#define BMA4_MAX_IF_MODE UINT8_C(3) +#define BMA4_MAX_VALUE_SELFTEST_SIGN UINT8_C(1) /**\name BUS READ AND WRITE LENGTH FOR MAG & ACCEL*/ -#define BMA4_MAG_TRIM_DATA_SIZE UINT8_C(16) -#define BMA4_MAG_XYZ_DATA_LENGTH UINT8_C(6) -#define BMA4_MAG_XYZR_DATA_LENGTH UINT8_C(8) -#define BMA4_ACCEL_DATA_LENGTH UINT8_C(6) -#define BMA4_FIFO_DATA_LENGTH UINT8_C(2) -#define BMA4_TEMP_DATA_SIZE UINT8_C(1) +#define BMA4_MAG_TRIM_DATA_SIZE UINT8_C(16) +#define BMA4_MAG_XYZ_DATA_LENGTH UINT8_C(6) +#define BMA4_MAG_XYZR_DATA_LENGTH UINT8_C(8) +#define BMA4_ACCEL_DATA_LENGTH UINT8_C(6) +#define BMA4_FIFO_DATA_LENGTH UINT8_C(2) +#define BMA4_TEMP_DATA_SIZE UINT8_C(1) /**\name TEMPERATURE CONSTANT */ -#define BMA4_OFFSET_TEMP UINT8_C(23) -#define BMA4_DEG UINT8_C(1) -#define BMA4_FAHREN UINT8_C(2) -#define BMA4_KELVIN UINT8_C(3) +#define BMA4_OFFSET_TEMP UINT8_C(23) +#define BMA4_DEG UINT8_C(1) +#define BMA4_FAHREN UINT8_C(2) +#define BMA4_KELVIN UINT8_C(3) /**\name DELAY DEFINITION IN MSEC*/ -#define BMA4_AUX_IF_DELAY UINT8_C(5) -#define BMA4_BMM150_WAKEUP_DELAY1 UINT8_C(2) -#define BMA4_BMM150_WAKEUP_DELAY2 UINT8_C(3) -#define BMA4_BMM150_WAKEUP_DELAY3 UINT8_C(1) -#define BMA4_GEN_READ_WRITE_DELAY UINT8_C(1) -#define BMA4_AUX_COM_DELAY UINT8_C(10) +#define BMA4_AUX_IF_DELAY UINT8_C(5) +#define BMA4_BMM150_WAKEUP_DELAY1 UINT8_C(2) +#define BMA4_BMM150_WAKEUP_DELAY2 UINT8_C(3) +#define BMA4_BMM150_WAKEUP_DELAY3 UINT8_C(1) +#define BMA4_GEN_READ_WRITE_DELAY UINT8_C(1) +#define BMA4_AUX_COM_DELAY UINT8_C(10) -/**\name ARRAY PARAMETER DEFINITIONS*/ -#define BMA4_SENSOR_TIME_MSB_BYTE UINT8_C(2) -#define BMA4_SENSOR_TIME_XLSB_BYTE UINT8_C(1) -#define BMA4_SENSOR_TIME_LSB_BYTE UINT8_C(0) -#define BMA4_MAG_X_LSB_BYTE UINT8_C(0) -#define BMA4_MAG_X_MSB_BYTE UINT8_C(1) -#define BMA4_MAG_Y_LSB_BYTE UINT8_C(2) -#define BMA4_MAG_Y_MSB_BYTE UINT8_C(3) -#define BMA4_MAG_Z_LSB_BYTE UINT8_C(4) -#define BMA4_MAG_Z_MSB_BYTE UINT8_C(5) -#define BMA4_MAG_R_LSB_BYTE UINT8_C(6) -#define BMA4_MAG_R_MSB_BYTE UINT8_C(7) -#define BMA4_TEMP_BYTE UINT8_C(0) -#define BMA4_FIFO_LENGTH_MSB_BYTE UINT8_C(1) +/**\name ARRAY PARAMETER DEFINITIONS*/ +#define BMA4_SENSOR_TIME_MSB_BYTE UINT8_C(2) +#define BMA4_SENSOR_TIME_XLSB_BYTE UINT8_C(1) +#define BMA4_SENSOR_TIME_LSB_BYTE UINT8_C(0) +#define BMA4_MAG_X_LSB_BYTE UINT8_C(0) +#define BMA4_MAG_X_MSB_BYTE UINT8_C(1) +#define BMA4_MAG_Y_LSB_BYTE UINT8_C(2) +#define BMA4_MAG_Y_MSB_BYTE UINT8_C(3) +#define BMA4_MAG_Z_LSB_BYTE UINT8_C(4) +#define BMA4_MAG_Z_MSB_BYTE UINT8_C(5) +#define BMA4_MAG_R_LSB_BYTE UINT8_C(6) +#define BMA4_MAG_R_MSB_BYTE UINT8_C(7) +#define BMA4_TEMP_BYTE UINT8_C(0) +#define BMA4_FIFO_LENGTH_MSB_BYTE UINT8_C(1) -/**\name ERROR CODES */ -#define BMA4_OK UINT16_C(0) -#define BMA4_E_NULL_PTR UINT16_C(1) -#define BMA4_E_OUT_OF_RANGE UINT16_C(1 << 1) -#define BMA4_E_INVALID_SENSOR UINT16_C(1 << 2) -#define BMA4_E_CONFIG_STREAM_ERROR UINT16_C(1 << 3) -#define BMA4_E_SELF_TEST_FAIL UINT16_C(1 << 4) -#define BMA4_E_FOC_FAIL UINT16_C(1 << 5) -#define BMA4_E_FAIL UINT16_C(1 << 6) -#define BMA4_E_INT_LINE_INVALID UINT16_C(1 << 7) -#define BMA4_E_RD_WR_LENGTH_INVALID UINT16_C(1 << 8) -#define BMA4_E_AUX_CONFIG_FAIL UINT16_C(1 << 9) -#define BMA4_E_SC_FIFO_HEADER_ERR UINT16_C(1 << 10) -#define BMA4_E_SC_FIFO_CONFIG_ERR UINT16_C(1 << 11) +/**\name ERROR CODES */ +#define BMA4_OK UINT16_C(0) +#define BMA4_E_NULL_PTR UINT16_C(1) +#define BMA4_E_OUT_OF_RANGE UINT16_C(1 << 1) +#define BMA4_E_INVALID_SENSOR UINT16_C(1 << 2) +#define BMA4_E_CONFIG_STREAM_ERROR UINT16_C(1 << 3) +#define BMA4_E_SELF_TEST_FAIL UINT16_C(1 << 4) +#define BMA4_E_FOC_FAIL UINT16_C(1 << 5) +#define BMA4_E_FAIL UINT16_C(1 << 6) +#define BMA4_E_INT_LINE_INVALID UINT16_C(1 << 7) +#define BMA4_E_RD_WR_LENGTH_INVALID UINT16_C(1 << 8) +#define BMA4_E_AUX_CONFIG_FAIL UINT16_C(1 << 9) +#define BMA4_E_SC_FIFO_HEADER_ERR UINT16_C(1 << 10) +#define BMA4_E_SC_FIFO_CONFIG_ERR UINT16_C(1 << 11) -/**\name UTILITY MACROS */ -#define BMA4_SET_LOW_BYTE UINT16_C(0x00FF) -#define BMA4_SET_HIGH_BYTE UINT16_C(0xFF00) -#define BMA4_SET_LOW_NIBBLE UINT8_C(0x0F) +/**\name UTILITY MACROS */ +#define BMA4_SET_LOW_BYTE UINT16_C(0x00FF) +#define BMA4_SET_HIGH_BYTE UINT16_C(0xFF00) +#define BMA4_SET_LOW_NIBBLE UINT8_C(0x0F) -/**\name FOC RELATED MACROS */ -#define BMA4_ACCEL_CONFIG_FOC UINT8_C(0xB7) +/**\name FOC RELATED MACROS */ +#define BMA4_ACCEL_CONFIG_FOC UINT8_C(0xB7) /* Macros used for Self test */ /* Self-test: Resulting minimum difference signal in mg for BMA42x */ -#define BMA42X_ST_ACC_X_AXIS_SIGNAL_DIFF UINT16_C(400) -#define BMA42X_ST_ACC_Y_AXIS_SIGNAL_DIFF UINT16_C(800) -#define BMA42X_ST_ACC_Z_AXIS_SIGNAL_DIFF UINT16_C(400) +#define BMA42X_ST_ACC_X_AXIS_SIGNAL_DIFF UINT16_C(400) +#define BMA42X_ST_ACC_Y_AXIS_SIGNAL_DIFF UINT16_C(800) +#define BMA42X_ST_ACC_Z_AXIS_SIGNAL_DIFF UINT16_C(400) /* Self-test: Resulting minimum difference signal in mg for BMA45x */ -#define BMA45X_ST_ACC_X_AXIS_SIGNAL_DIFF UINT16_C(1800) -#define BMA45X_ST_ACC_Y_AXIS_SIGNAL_DIFF UINT16_C(1800) -#define BMA45X_ST_ACC_Z_AXIS_SIGNAL_DIFF UINT16_C(1800) +#define BMA45X_ST_ACC_X_AXIS_SIGNAL_DIFF UINT16_C(1800) +#define BMA45X_ST_ACC_Y_AXIS_SIGNAL_DIFF UINT16_C(1800) +#define BMA45X_ST_ACC_Z_AXIS_SIGNAL_DIFF UINT16_C(1800) /**\name BOOLEAN TYPES*/ #ifndef TRUE -#define TRUE UINT8_C(0x01) +#define TRUE UINT8_C(0x01) #endif #ifndef FALSE -#define FALSE UINT8_C(0x00) +#define FALSE UINT8_C(0x00) #endif #ifndef NULL -#define NULL UINT8_C(0x00) +#define NULL UINT8_C(0x00) #endif -/**\name ERROR STATUS POSITION AND MASK*/ -#define BMA4_FATAL_ERR_MSK UINT8_C(0x01) -#define BMA4_CMD_ERR_POS UINT8_C(1) -#define BMA4_CMD_ERR_MSK UINT8_C(0x02) -#define BMA4_ERR_CODE_POS UINT8_C(2) -#define BMA4_ERR_CODE_MSK UINT8_C(0x1C) -#define BMA4_FIFO_ERR_POS UINT8_C(6) -#define BMA4_FIFO_ERR_MSK UINT8_C(0x40) -#define BMA4_AUX_ERR_POS UINT8_C(7) -#define BMA4_AUX_ERR_MSK UINT8_C(0x80) +/**\name ERROR STATUS POSITION AND MASK*/ +#define BMA4_FATAL_ERR_MSK UINT8_C(0x01) +#define BMA4_CMD_ERR_POS UINT8_C(1) +#define BMA4_CMD_ERR_MSK UINT8_C(0x02) +#define BMA4_ERR_CODE_POS UINT8_C(2) +#define BMA4_ERR_CODE_MSK UINT8_C(0x1C) +#define BMA4_FIFO_ERR_POS UINT8_C(6) +#define BMA4_FIFO_ERR_MSK UINT8_C(0x40) +#define BMA4_AUX_ERR_POS UINT8_C(7) +#define BMA4_AUX_ERR_MSK UINT8_C(0x80) -/**\name Maximum number of bytes to be read from the sensor */ -#define BMA4_MAX_BUFFER_SIZE UINT8_C(81) +/**\name Maximum number of bytes to be read from the sensor */ +#define BMA4_MAX_BUFFER_SIZE UINT8_C(81) -/**\name NV_CONFIG POSITION AND MASK*/ +/**\name NV_CONFIG POSITION AND MASK*/ /* NV_CONF Description - Reg Addr --> (0x70), Bit --> 3 */ -#define BMA4_NV_ACCEL_OFFSET_POS UINT8_C(3) -#define BMA4_NV_ACCEL_OFFSET_MSK UINT8_C(0x08) +#define BMA4_NV_ACCEL_OFFSET_POS UINT8_C(3) +#define BMA4_NV_ACCEL_OFFSET_MSK UINT8_C(0x08) -/**\name MAG DATA XYZ POSITION AND MASK*/ -#define BMA4_DATA_MAG_X_LSB_POS UINT8_C(3) -#define BMA4_DATA_MAG_X_LSB_MSK UINT8_C(0xF8) -#define BMA4_DATA_MAG_Y_LSB_POS UINT8_C(3) -#define BMA4_DATA_MAG_Y_LSB_MSK UINT8_C(0xF8) -#define BMA4_DATA_MAG_Z_LSB_POS UINT8_C(1) -#define BMA4_DATA_MAG_Z_LSB_MSK UINT8_C(0xFE) -#define BMA4_DATA_MAG_R_LSB_POS UINT8_C(2) -#define BMA4_DATA_MAG_R_LSB_MSK UINT8_C(0xFC) +/**\name MAG DATA XYZ POSITION AND MASK*/ +#define BMA4_DATA_MAG_X_LSB_POS UINT8_C(3) +#define BMA4_DATA_MAG_X_LSB_MSK UINT8_C(0xF8) +#define BMA4_DATA_MAG_Y_LSB_POS UINT8_C(3) +#define BMA4_DATA_MAG_Y_LSB_MSK UINT8_C(0xF8) +#define BMA4_DATA_MAG_Z_LSB_POS UINT8_C(1) +#define BMA4_DATA_MAG_Z_LSB_MSK UINT8_C(0xFE) +#define BMA4_DATA_MAG_R_LSB_POS UINT8_C(2) +#define BMA4_DATA_MAG_R_LSB_MSK UINT8_C(0xFC) /**\name ACCEL DATA READY POSITION AND MASK*/ -#define BMA4_STAT_DATA_RDY_ACCEL_POS UINT8_C(7) -#define BMA4_STAT_DATA_RDY_ACCEL_MSK UINT8_C(0x80) +#define BMA4_STAT_DATA_RDY_ACCEL_POS UINT8_C(7) +#define BMA4_STAT_DATA_RDY_ACCEL_MSK UINT8_C(0x80) /**\name MAG DATA READY POSITION AND MASK*/ -#define BMA4_STAT_DATA_RDY_MAG_POS UINT8_C(5) -#define BMA4_STAT_DATA_RDY_MAG_MSK UINT8_C(0x20) +#define BMA4_STAT_DATA_RDY_MAG_POS UINT8_C(5) +#define BMA4_STAT_DATA_RDY_MAG_MSK UINT8_C(0x20) /**\name ADVANCE POWER SAVE POSITION AND MASK*/ -#define BMA4_ADVANCE_POWER_SAVE_MSK UINT8_C(0x01) +#define BMA4_ADVANCE_POWER_SAVE_MSK UINT8_C(0x01) /**\name ACCELEROMETER ENABLE POSITION AND MASK*/ -#define BMA4_ACCEL_ENABLE_POS UINT8_C(2) -#define BMA4_ACCEL_ENABLE_MSK UINT8_C(0x04) +#define BMA4_ACCEL_ENABLE_POS UINT8_C(2) +#define BMA4_ACCEL_ENABLE_MSK UINT8_C(0x04) /**\name MAGNETOMETER ENABLE POSITION AND MASK*/ -#define BMA4_MAG_ENABLE_MSK UINT8_C(0x01) +#define BMA4_MAG_ENABLE_MSK UINT8_C(0x01) -/**\name ACCEL CONFIGURATION POSITION AND MASK*/ -#define BMA4_ACCEL_ODR_MSK UINT8_C(0x0F) -#define BMA4_ACCEL_BW_POS UINT8_C(4) -#define BMA4_ACCEL_BW_MSK UINT8_C(0x70) -#define BMA4_ACCEL_RANGE_MSK UINT8_C(0x03) -#define BMA4_ACCEL_PERFMODE_POS UINT8_C(7) -#define BMA4_ACCEL_PERFMODE_MSK UINT8_C(0x80) +/**\name ACCEL CONFIGURATION POSITION AND MASK*/ +#define BMA4_ACCEL_ODR_MSK UINT8_C(0x0F) +#define BMA4_ACCEL_BW_POS UINT8_C(4) +#define BMA4_ACCEL_BW_MSK UINT8_C(0x70) +#define BMA4_ACCEL_RANGE_MSK UINT8_C(0x03) +#define BMA4_ACCEL_PERFMODE_POS UINT8_C(7) +#define BMA4_ACCEL_PERFMODE_MSK UINT8_C(0x80) -/**\name MAG CONFIGURATION POSITION AND MASK*/ -#define BMA4_MAG_CONFIG_OFFSET_POS UINT8_C(4) -#define BMA4_MAG_CONFIG_OFFSET_LEN UINT8_C(4) -#define BMA4_MAG_CONFIG_OFFSET_MSK UINT8_C(0xF0) -#define BMA4_MAG_CONFIG_OFFSET_REG (BMA4_AUX_CONFIG_ADDR) +/**\name MAG CONFIGURATION POSITION AND MASK*/ +#define BMA4_MAG_CONFIG_OFFSET_POS UINT8_C(4) +#define BMA4_MAG_CONFIG_OFFSET_LEN UINT8_C(4) +#define BMA4_MAG_CONFIG_OFFSET_MSK UINT8_C(0xF0) +#define BMA4_MAG_CONFIG_OFFSET_REG (BMA4_AUX_CONFIG_ADDR) /**\name FIFO SELF WAKE UP POSITION AND MASK*/ -#define BMA4_FIFO_SELF_WAKE_UP_POS UINT8_C(1) -#define BMA4_FIFO_SELF_WAKE_UP_MSK UINT8_C(0x02) +#define BMA4_FIFO_SELF_WAKE_UP_POS UINT8_C(1) +#define BMA4_FIFO_SELF_WAKE_UP_MSK UINT8_C(0x02) -/**\name FIFO BYTE COUNTER POSITION AND MASK*/ -#define BMA4_FIFO_BYTE_COUNTER_MSB_MSK UINT8_C(0x3F) +/**\name FIFO BYTE COUNTER POSITION AND MASK*/ +#define BMA4_FIFO_BYTE_COUNTER_MSB_MSK UINT8_C(0x3F) -/**\name FIFO DATA POSITION AND MASK*/ -#define BMA4_FIFO_DATA_POS UINT8_C(0) -#define BMA4_FIFO_DATA_MSK UINT8_C(0xFF) +/**\name FIFO DATA POSITION AND MASK*/ +#define BMA4_FIFO_DATA_POS UINT8_C(0) +#define BMA4_FIFO_DATA_MSK UINT8_C(0xFF) -/**\name FIFO FILTER FOR ACCEL POSITION AND MASK*/ -#define BMA4_FIFO_DOWN_ACCEL_POS UINT8_C(4) -#define BMA4_FIFO_DOWN_ACCEL_MSK UINT8_C(0x70) -#define BMA4_FIFO_FILTER_ACCEL_POS UINT8_C(7) -#define BMA4_FIFO_FILTER_ACCEL_MSK UINT8_C(0x80) +/**\name FIFO FILTER FOR ACCEL POSITION AND MASK*/ +#define BMA4_FIFO_DOWN_ACCEL_POS UINT8_C(4) +#define BMA4_FIFO_DOWN_ACCEL_MSK UINT8_C(0x70) +#define BMA4_FIFO_FILTER_ACCEL_POS UINT8_C(7) +#define BMA4_FIFO_FILTER_ACCEL_MSK UINT8_C(0x80) -/**\name FIFO HEADER DATA DEFINITIONS */ -#define FIFO_HEAD_A UINT8_C(0x84) -#define FIFO_HEAD_M UINT8_C(0x90) -#define FIFO_HEAD_M_A UINT8_C(0x94) -#define FIFO_HEAD_SENSOR_TIME UINT8_C(0x44) -#define FIFO_HEAD_INPUT_CONFIG UINT8_C(0x48) -#define FIFO_HEAD_SKIP_FRAME UINT8_C(0x40) -#define FIFO_HEAD_OVER_READ_MSB UINT8_C(0x80) -#define FIFO_HEAD_SAMPLE_DROP UINT8_C(0x50) +/**\name FIFO HEADER DATA DEFINITIONS */ +#define FIFO_HEAD_A UINT8_C(0x84) +#define FIFO_HEAD_M UINT8_C(0x90) +#define FIFO_HEAD_M_A UINT8_C(0x94) +#define FIFO_HEAD_SENSOR_TIME UINT8_C(0x44) +#define FIFO_HEAD_INPUT_CONFIG UINT8_C(0x48) +#define FIFO_HEAD_SKIP_FRAME UINT8_C(0x40) +#define FIFO_HEAD_OVER_READ_MSB UINT8_C(0x80) +#define FIFO_HEAD_SAMPLE_DROP UINT8_C(0x50) -/**\name FIFO HEADERLESS MODE DATA ENABLE DEFINITIONS */ -#define BMA4_FIFO_M_A_ENABLE UINT8_C(0x60) -#define BMA4_FIFO_A_ENABLE UINT8_C(0x40) -#define BMA4_FIFO_M_ENABLE UINT8_C(0x20) +/**\name FIFO HEADERLESS MODE DATA ENABLE DEFINITIONS */ +#define BMA4_FIFO_M_A_ENABLE UINT8_C(0x60) +#define BMA4_FIFO_A_ENABLE UINT8_C(0x40) +#define BMA4_FIFO_M_ENABLE UINT8_C(0x20) -/**\name FIFO CONFIGURATION SELECTION */ -#define BMA4_FIFO_STOP_ON_FULL UINT8_C(0x01) -#define BMA4_FIFO_TIME UINT8_C(0x02) -#define BMA4_FIFO_TAG_INTR2 UINT8_C(0x04) -#define BMA4_FIFO_TAG_INTR1 UINT8_C(0x08) -#define BMA4_FIFO_HEADER UINT8_C(0x10) -#define BMA4_FIFO_MAG UINT8_C(0x20) -#define BMA4_FIFO_ACCEL UINT8_C(0x40) -#define BMA4_FIFO_ALL UINT8_C(0x7F) -#define BMA4_FIFO_CONFIG_0_MASK UINT8_C(0x03) -#define BMA4_FIFO_CONFIG_1_MASK UINT8_C(0xFC) +/**\name FIFO CONFIGURATION SELECTION */ +#define BMA4_FIFO_STOP_ON_FULL UINT8_C(0x01) +#define BMA4_FIFO_TIME UINT8_C(0x02) +#define BMA4_FIFO_TAG_INTR2 UINT8_C(0x04) +#define BMA4_FIFO_TAG_INTR1 UINT8_C(0x08) +#define BMA4_FIFO_HEADER UINT8_C(0x10) +#define BMA4_FIFO_MAG UINT8_C(0x20) +#define BMA4_FIFO_ACCEL UINT8_C(0x40) +#define BMA4_FIFO_ALL UINT8_C(0x7F) +#define BMA4_FIFO_CONFIG_0_MASK UINT8_C(0x03) +#define BMA4_FIFO_CONFIG_1_MASK UINT8_C(0xFC) -/**\name FIFO FRAME COUNT DEFINITION */ -#define FIFO_LSB_CONFIG_CHECK UINT8_C(0x00) -#define FIFO_MSB_CONFIG_CHECK UINT8_C(0x80) -#define BMA4_FIFO_TAG_INTR_MASK UINT8_C(0xFC) +/**\name FIFO FRAME COUNT DEFINITION */ +#define FIFO_LSB_CONFIG_CHECK UINT8_C(0x00) +#define FIFO_MSB_CONFIG_CHECK UINT8_C(0x80) +#define BMA4_FIFO_TAG_INTR_MASK UINT8_C(0xFC) -/**\name FIFO DROPPED FRAME DEFINITION */ -#define AUX_FIFO_DROP UINT8_C(0x04) -#define ACCEL_AUX_FIFO_DROP UINT8_C(0x05) -#define ACCEL_FIFO_DROP UINT8_C(0x01) +/**\name FIFO DROPPED FRAME DEFINITION */ +#define AUX_FIFO_DROP UINT8_C(0x04) +#define ACCEL_AUX_FIFO_DROP UINT8_C(0x05) +#define ACCEL_FIFO_DROP UINT8_C(0x01) /**\name FIFO MAG DEFINITION*/ -#define BMA4_MA_FIFO_A_X_LSB UINT8_C(8) +#define BMA4_MA_FIFO_A_X_LSB UINT8_C(8) /**\name FIFO sensor time length definitions*/ -#define BMA4_SENSOR_TIME_LENGTH UINT8_C(3) +#define BMA4_SENSOR_TIME_LENGTH UINT8_C(3) /**\name FIFO LENGTH DEFINITION*/ -#define BMA4_FIFO_A_LENGTH UINT8_C(6) -#define BMA4_FIFO_M_LENGTH UINT8_C(8) -#define BMA4_FIFO_MA_LENGTH UINT8_C(14) +#define BMA4_FIFO_A_LENGTH UINT8_C(6) +#define BMA4_FIFO_M_LENGTH UINT8_C(8) +#define BMA4_FIFO_MA_LENGTH UINT8_C(14) -/**\name MAG I2C ADDRESS SELECTION POSITION AND MASK*/ -#define BMA4_I2C_DEVICE_ADDR_POS UINT8_C(1) -#define BMA4_I2C_DEVICE_ADDR_MSK UINT8_C(0xFE) +/**\name MAG I2C ADDRESS SELECTION POSITION AND MASK*/ +#define BMA4_I2C_DEVICE_ADDR_POS UINT8_C(1) +#define BMA4_I2C_DEVICE_ADDR_MSK UINT8_C(0xFE) /**\name MAG CONFIGURATION FOR SECONDARY INTERFACE POSITION AND MASK*/ -#define BMA4_MAG_BURST_MSK UINT8_C(0x03) -#define BMA4_MAG_MANUAL_ENABLE_POS UINT8_C(7) -#define BMA4_MAG_MANUAL_ENABLE_MSK UINT8_C(0x80) -#define BMA4_READ_ADDR_MSK UINT8_C(0xFF) -#define BMA4_WRITE_ADDR_MSK UINT8_C(0xFF) -#define BMA4_WRITE_DATA_MSK UINT8_C(0xFF) +#define BMA4_MAG_BURST_MSK UINT8_C(0x03) +#define BMA4_MAG_MANUAL_ENABLE_POS UINT8_C(7) +#define BMA4_MAG_MANUAL_ENABLE_MSK UINT8_C(0x80) +#define BMA4_READ_ADDR_MSK UINT8_C(0xFF) +#define BMA4_WRITE_ADDR_MSK UINT8_C(0xFF) +#define BMA4_WRITE_DATA_MSK UINT8_C(0xFF) -/**\name OUTPUT TYPE ENABLE POSITION AND MASK*/ -#define BMA4_INT_EDGE_CTRL_MASK UINT8_C(0x01) -#define BMA4_INT_EDGE_CTRL_POS UINT8_C(0x00) -#define BMA4_INT_LEVEL_MASK UINT8_C(0x02) -#define BMA4_INT_LEVEL_POS UINT8_C(0x01) -#define BMA4_INT_OPEN_DRAIN_MASK UINT8_C(0x04) -#define BMA4_INT_OPEN_DRAIN_POS UINT8_C(0x02) -#define BMA4_INT_OUTPUT_EN_MASK UINT8_C(0x08) -#define BMA4_INT_OUTPUT_EN_POS UINT8_C(0x03) -#define BMA4_INT_INPUT_EN_MASK UINT8_C(0x10) -#define BMA4_INT_INPUT_EN_POS UINT8_C(0x04) +/**\name OUTPUT TYPE ENABLE POSITION AND MASK*/ +#define BMA4_INT_EDGE_CTRL_MASK UINT8_C(0x01) +#define BMA4_INT_EDGE_CTRL_POS UINT8_C(0x00) +#define BMA4_INT_LEVEL_MASK UINT8_C(0x02) +#define BMA4_INT_LEVEL_POS UINT8_C(0x01) +#define BMA4_INT_OPEN_DRAIN_MASK UINT8_C(0x04) +#define BMA4_INT_OPEN_DRAIN_POS UINT8_C(0x02) +#define BMA4_INT_OUTPUT_EN_MASK UINT8_C(0x08) +#define BMA4_INT_OUTPUT_EN_POS UINT8_C(0x03) +#define BMA4_INT_INPUT_EN_MASK UINT8_C(0x10) +#define BMA4_INT_INPUT_EN_POS UINT8_C(0x04) -/**\name IF CONFIG POSITION AND MASK*/ -#define BMA4_CONFIG_SPI3_MSK UINT8_C(0x01) -#define BMA4_IF_CONFIG_IF_MODE_POS UINT8_C(4) -#define BMA4_IF_CONFIG_IF_MODE_MSK UINT8_C(0x10) +/**\name IF CONFIG POSITION AND MASK*/ +#define BMA4_CONFIG_SPI3_MSK UINT8_C(0x01) +#define BMA4_IF_CONFIG_IF_MODE_POS UINT8_C(4) +#define BMA4_IF_CONFIG_IF_MODE_MSK UINT8_C(0x10) -/**\name ACCEL SELF TEST POSITION AND MASK*/ -#define BMA4_ACCEL_SELFTEST_ENABLE_MSK UINT8_C(0x01) -#define BMA4_ACCEL_SELFTEST_SIGN_POS UINT8_C(2) -#define BMA4_ACCEL_SELFTEST_SIGN_MSK UINT8_C(0x04) -#define BMA4_SELFTEST_AMP_POS UINT8_C(3) -#define BMA4_SELFTEST_AMP_MSK UINT8_C(0x08) +/**\name ACCEL SELF TEST POSITION AND MASK*/ +#define BMA4_ACCEL_SELFTEST_ENABLE_MSK UINT8_C(0x01) +#define BMA4_ACCEL_SELFTEST_SIGN_POS UINT8_C(2) +#define BMA4_ACCEL_SELFTEST_SIGN_MSK UINT8_C(0x04) +#define BMA4_SELFTEST_AMP_POS UINT8_C(3) +#define BMA4_SELFTEST_AMP_MSK UINT8_C(0x08) -/**\name ACCEL ODR */ -#define BMA4_OUTPUT_DATA_RATE_0_78HZ UINT8_C(0x01) -#define BMA4_OUTPUT_DATA_RATE_1_56HZ UINT8_C(0x02) -#define BMA4_OUTPUT_DATA_RATE_3_12HZ UINT8_C(0x03) -#define BMA4_OUTPUT_DATA_RATE_6_25HZ UINT8_C(0x04) -#define BMA4_OUTPUT_DATA_RATE_12_5HZ UINT8_C(0x05) -#define BMA4_OUTPUT_DATA_RATE_25HZ UINT8_C(0x06) -#define BMA4_OUTPUT_DATA_RATE_50HZ UINT8_C(0x07) -#define BMA4_OUTPUT_DATA_RATE_100HZ UINT8_C(0x08) -#define BMA4_OUTPUT_DATA_RATE_200HZ UINT8_C(0x09) -#define BMA4_OUTPUT_DATA_RATE_400HZ UINT8_C(0x0A) -#define BMA4_OUTPUT_DATA_RATE_800HZ UINT8_C(0x0B) -#define BMA4_OUTPUT_DATA_RATE_1600HZ UINT8_C(0x0C) +/**\name ACCEL ODR */ +#define BMA4_OUTPUT_DATA_RATE_0_78HZ UINT8_C(0x01) +#define BMA4_OUTPUT_DATA_RATE_1_56HZ UINT8_C(0x02) +#define BMA4_OUTPUT_DATA_RATE_3_12HZ UINT8_C(0x03) +#define BMA4_OUTPUT_DATA_RATE_6_25HZ UINT8_C(0x04) +#define BMA4_OUTPUT_DATA_RATE_12_5HZ UINT8_C(0x05) +#define BMA4_OUTPUT_DATA_RATE_25HZ UINT8_C(0x06) +#define BMA4_OUTPUT_DATA_RATE_50HZ UINT8_C(0x07) +#define BMA4_OUTPUT_DATA_RATE_100HZ UINT8_C(0x08) +#define BMA4_OUTPUT_DATA_RATE_200HZ UINT8_C(0x09) +#define BMA4_OUTPUT_DATA_RATE_400HZ UINT8_C(0x0A) +#define BMA4_OUTPUT_DATA_RATE_800HZ UINT8_C(0x0B) +#define BMA4_OUTPUT_DATA_RATE_1600HZ UINT8_C(0x0C) -/**\name ACCEL BANDWIDTH PARAMETER */ -#define BMA4_ACCEL_OSR4_AVG1 UINT8_C(0) -#define BMA4_ACCEL_OSR2_AVG2 UINT8_C(1) -#define BMA4_ACCEL_NORMAL_AVG4 UINT8_C(2) -#define BMA4_ACCEL_CIC_AVG8 UINT8_C(3) -#define BMA4_ACCEL_RES_AVG16 UINT8_C(4) -#define BMA4_ACCEL_RES_AVG32 UINT8_C(5) -#define BMA4_ACCEL_RES_AVG64 UINT8_C(6) -#define BMA4_ACCEL_RES_AVG128 UINT8_C(7) +/**\name ACCEL BANDWIDTH PARAMETER */ +#define BMA4_ACCEL_OSR4_AVG1 UINT8_C(0) +#define BMA4_ACCEL_OSR2_AVG2 UINT8_C(1) +#define BMA4_ACCEL_NORMAL_AVG4 UINT8_C(2) +#define BMA4_ACCEL_CIC_AVG8 UINT8_C(3) +#define BMA4_ACCEL_RES_AVG16 UINT8_C(4) +#define BMA4_ACCEL_RES_AVG32 UINT8_C(5) +#define BMA4_ACCEL_RES_AVG64 UINT8_C(6) +#define BMA4_ACCEL_RES_AVG128 UINT8_C(7) -/**\name ACCEL PERFMODE PARAMETER */ -#define BMA4_CIC_AVG_MODE UINT8_C(0) -#define BMA4_CONTINUOUS_MODE UINT8_C(1) +/**\name ACCEL PERFMODE PARAMETER */ +#define BMA4_CIC_AVG_MODE UINT8_C(0) +#define BMA4_CONTINUOUS_MODE UINT8_C(1) -/**\name MAG OFFSET */ -#define BMA4_MAG_OFFSET_MAX UINT8_C(0x00) +/**\name MAG OFFSET */ +#define BMA4_MAG_OFFSET_MAX UINT8_C(0x00) -/**\name ENABLE/DISABLE SELECTIONS */ -#define BMA4_X_AXIS UINT8_C(0) -#define BMA4_Y_AXIS UINT8_C(1) -#define BMA4_Z_AXIS UINT8_C(2) +/**\name ENABLE/DISABLE SELECTIONS */ +#define BMA4_X_AXIS UINT8_C(0) +#define BMA4_Y_AXIS UINT8_C(1) +#define BMA4_Z_AXIS UINT8_C(2) /**\name SELF TEST*/ -#define BMA4_SELFTEST_PASS UINT8_C(0) -#define BMA4_SELFTEST_FAIL UINT8_C(1) +#define BMA4_SELFTEST_PASS UINT8_C(0) +#define BMA4_SELFTEST_FAIL UINT8_C(1) /**\name INTERRUPT MAPS */ -#define BMA4_INTR1_MAP UINT8_C(0) -#define BMA4_INTR2_MAP UINT8_C(1) +#define BMA4_INTR1_MAP UINT8_C(0) +#define BMA4_INTR2_MAP UINT8_C(1) -/**\name INTERRUPT MASKS */ -#define BMA4_FIFO_FULL_INT UINT16_C(0x0100) -#define BMA4_FIFO_WM_INT UINT16_C(0x0200) -#define BMA4_DATA_RDY_INT UINT16_C(0x0400) -#define BMA4_MAG_DATA_RDY_INT UINT16_C(0x2000) -#define BMA4_ACCEL_DATA_RDY_INT UINT16_C(0x8000) +/**\name INTERRUPT MASKS */ +#define BMA4_FIFO_FULL_INT UINT16_C(0x0100) +#define BMA4_FIFO_WM_INT UINT16_C(0x0200) +#define BMA4_DATA_RDY_INT UINT16_C(0x0400) +#define BMA4_MAG_DATA_RDY_INT UINT16_C(0x2000) +#define BMA4_ACCEL_DATA_RDY_INT UINT16_C(0x8000) -/**\name AKM POWER MODE SELECTION */ -#define AKM_POWER_DOWN_MODE UINT8_C(0) -#define AKM_SINGLE_MEAS_MODE UINT8_C(1) +/**\name AKM POWER MODE SELECTION */ +#define AKM_POWER_DOWN_MODE UINT8_C(0) +#define AKM_SINGLE_MEAS_MODE UINT8_C(1) -/**\name SECONDARY_MAG POWER MODE SELECTION */ -#define BMA4_MAG_FORCE_MODE UINT8_C(0) -#define BMA4_MAG_SUSPEND_MODE UINT8_C(1) +/**\name SECONDARY_MAG POWER MODE SELECTION */ +#define BMA4_MAG_FORCE_MODE UINT8_C(0) +#define BMA4_MAG_SUSPEND_MODE UINT8_C(1) -/**\name MAG POWER MODE SELECTION */ -#define FORCE_MODE UINT8_C(0) -#define SUSPEND_MODE UINT8_C(1) +/**\name MAG POWER MODE SELECTION */ +#define FORCE_MODE UINT8_C(0) +#define SUSPEND_MODE UINT8_C(1) -/**\name ACCEL POWER MODE */ -#define ACCEL_MODE_NORMAL UINT8_C(0x11) +/**\name ACCEL POWER MODE */ +#define ACCEL_MODE_NORMAL UINT8_C(0x11) -/**\name MAG POWER MODE */ -#define MAG_MODE_SUSPEND UINT8_C(0x18) +/**\name MAG POWER MODE */ +#define MAG_MODE_SUSPEND UINT8_C(0x18) -/**\name ENABLE/DISABLE BIT VALUES */ -#define BMA4_ENABLE UINT8_C(0x01) -#define BMA4_DISABLE UINT8_C(0x00) +/**\name ENABLE/DISABLE BIT VALUES */ +#define BMA4_ENABLE UINT8_C(0x01) +#define BMA4_DISABLE UINT8_C(0x00) -/**\name DEFINITION USED FOR DIFFERENT WRITE */ -#define BMA4_MANUAL_DISABLE UINT8_C(0x00) -#define BMA4_MANUAL_ENABLE UINT8_C(0x01) -#define BMA4_ENABLE_MAG_IF_MODE UINT8_C(0x01) -#define BMA4_MAG_DATA_READ_REG UINT8_C(0x0A) -#define BMA4_BMM_POWER_MODE_REG UINT8_C(0x06) -#define BMA4_SEC_IF_NULL UINT8_C(0) -#define BMA4_SEC_IF_BMM150 UINT8_C(1) -#define BMA4_SEC_IF_AKM09916 UINT8_C(2) -#define BMA4_ENABLE_AUX_IF_MODE UINT8_C(0x01) +/**\name DEFINITION USED FOR DIFFERENT WRITE */ +#define BMA4_MANUAL_DISABLE UINT8_C(0x00) +#define BMA4_MANUAL_ENABLE UINT8_C(0x01) +#define BMA4_ENABLE_MAG_IF_MODE UINT8_C(0x01) +#define BMA4_MAG_DATA_READ_REG UINT8_C(0x0A) +#define BMA4_BMM_POWER_MODE_REG UINT8_C(0x06) +#define BMA4_SEC_IF_NULL UINT8_C(0) +#define BMA4_SEC_IF_BMM150 UINT8_C(1) +#define BMA4_SEC_IF_AKM09916 UINT8_C(2) +#define BMA4_ENABLE_AUX_IF_MODE UINT8_C(0x01) -/**\name SENSOR RESOLUTION */ -#define BMA4_12_BIT_RESOLUTION UINT8_C(12) -#define BMA4_14_BIT_RESOLUTION UINT8_C(14) +/**\name SENSOR RESOLUTION */ +#define BMA4_12_BIT_RESOLUTION UINT8_C(12) +#define BMA4_14_BIT_RESOLUTION UINT8_C(14) #define BMA4_16_BIT_RESOLUTION UINT8_C(16) /**\name MULTIPLIER */ @@ -653,308 +656,308 @@ /*! for handling float temperature values */ #define BMA4_SCALE_TEMP INT32_C(1000) /* BMA4_FAHREN_SCALED = 1.8 * 1000 */ -#define BMA4_FAHREN_SCALED INT32_C(1800) +#define BMA4_FAHREN_SCALED INT32_C(1800) /* BMA4_KELVIN_SCALED = 273.15 * 1000 */ -#define BMA4_KELVIN_SCALED INT32_C(273150) +#define BMA4_KELVIN_SCALED INT32_C(273150) -/**\name MAP BURST READ LENGTHS */ -#define BMA4_AUX_READ_LEN_0 0 -#define BMA4_AUX_READ_LEN_1 1 -#define BMA4_AUX_READ_LEN_2 2 -#define BMA4_AUX_READ_LEN_3 3 +/**\name MAP BURST READ LENGTHS */ +#define BMA4_AUX_READ_LEN_0 0 +#define BMA4_AUX_READ_LEN_1 1 +#define BMA4_AUX_READ_LEN_2 2 +#define BMA4_AUX_READ_LEN_3 3 #ifndef ABS -#define ABS(a) ((a) > 0 ? (a) : -(a)) /*!< Absolute value */ +#define ABS(a) ((a) > 0 ? (a) : -(a)) /*!< Absolute value */ #endif -/**\name BIT SLICE GET AND SET FUNCTIONS */ -#define BMA4_GET_BITSLICE(regvar, bitname)\ - ((regvar & bitname##_MSK) >> bitname##_POS) -#define BMA4_SET_BITSLICE(regvar, bitname, val)\ - ((regvar & ~bitname##_MSK) | \ - ((val<> bitname##_POS) +#define BMA4_SET_BITSLICE(regvar, bitname, val)\ + ((regvar & ~bitname##_MSK) | \ + ((val<> 8) +#define BMA4_GET_LSB(var) (uint8_t)(var & BMA4_SET_LOW_BYTE) +#define BMA4_GET_MSB(var) (uint8_t)((var & BMA4_SET_HIGH_BYTE) >> 8) #define BMA4_SET_BIT_VAL_0(reg_data, bitname) (reg_data & ~(bitname##_MSK)) #define BMA4_SET_BITS_POS_0(reg_data, bitname, data) \ - ((reg_data & ~(bitname##_MSK)) | \ - (data & bitname##_MSK)) + ((reg_data & ~(bitname##_MSK)) | \ + (data & bitname##_MSK)) #define BMA4_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK)) -/**\name TYPEDEF DEFINITIONS */ +/**\name TYPEDEF DEFINITIONS */ /*! * @brief Bus communication function pointer which should be mapped to * the platform specific read and write functions of the user */ typedef uint16_t (*bma4_com_fptr_t)(uint8_t dev_addr, uint8_t reg_addr, uint8_t *read_data, uint16_t len); -/*! delay function pointer */ +/*! delay function pointer */ typedef void (*bma4_delay_fptr_t)(uint32_t); /******************************************************************************/ -/*! @name Enum Declarations */ +/*! @name Enum Declarations */ /******************************************************************************/ /*! @name Enum to define BMA4 variants */ enum bma4_variant { - BMA42X_VARIANT = 1, - BMA45X_VARIANT + BMA42X_VARIANT = 1, + BMA45X_VARIANT }; -/**\name STRUCTURE DEFINITIONS*/ +/**\name STRUCTURE DEFINITIONS*/ /*! * @brief * This structure holds asic info. for feature configuration. */ struct bma4_asic_data { - /* Feature config start addr (0-3 bits)*/ - uint8_t asic_lsb; - /* Feature config start addr (4-11 bits)*/ - uint8_t asic_msb; + /* Feature config start addr (0-3 bits)*/ + uint8_t asic_lsb; + /* Feature config start addr (4-11 bits)*/ + uint8_t asic_msb; }; /*! * @brief Auxiliary configuration structure for user settings */ struct bma4_aux_config { - /*! Device address of auxiliary sensor */ - uint8_t aux_dev_addr; - /*! To enable manual or auto mode */ - uint8_t manual_enable; - /*! No of bytes to be read at a time */ - uint8_t burst_read_length; - /*! Variable to set the auxiliary interface */ - uint8_t if_mode; + /*! Device address of auxiliary sensor */ + uint8_t aux_dev_addr; + /*! To enable manual or auto mode */ + uint8_t manual_enable; + /*! No of bytes to be read at a time */ + uint8_t burst_read_length; + /*! Variable to set the auxiliary interface */ + uint8_t if_mode; }; /*! - * @brief - * This structure holds all relevant information about BMA4 + * @brief + * This structure holds all relevant information about BMA4 */ struct bma4_dev { - /*! Chip id of BMA4 */ - uint8_t chip_id; - /*! Chip id of auxiliary sensor */ - uint8_t aux_chip_id; - /*! Device address of BMA4 */ - uint8_t dev_addr; - /*! Interface detail */ - uint8_t interface; - /*! Auxiliary sensor information */ - uint8_t aux_sensor; - /*! Decide SPI or I2C read mechanism */ - uint8_t dummy_byte; - /*! Resolution for FOC */ - uint8_t resolution; - /*! Define the BMA4 variant BMA42X or BMA45X */ - enum bma4_variant variant; -/* ! Used to check mag manual/auto mode status - int8_t mag_manual_enable;*/ - /*! FIFO related configurations */ - struct bma4_fifo_frame *fifo; - /*! Config stream data buffer address will be assigned*/ - const uint8_t *config_file_ptr; - /*! Max read/write length (maximum supported length is 32). - To be set by the user */ - uint8_t read_write_len; - /*! Feature len */ - uint8_t feature_len; - /*! Contains asic information */ - struct bma4_asic_data asic_data; - /*! Contains aux configuration settings */ - struct bma4_aux_config aux_config; - /*! Bus read function pointer */ - bma4_com_fptr_t bus_read; - /*! Bus write function pointer */ - bma4_com_fptr_t bus_write; - /*! delay(in ms) function pointer */ - bma4_delay_fptr_t delay; + /*! Chip id of BMA4 */ + uint8_t chip_id; + /*! Chip id of auxiliary sensor */ + uint8_t aux_chip_id; + /*! Device address of BMA4 */ + uint8_t dev_addr; + /*! Interface detail */ + uint8_t interface; + /*! Auxiliary sensor information */ + uint8_t aux_sensor; + /*! Decide SPI or I2C read mechanism */ + uint8_t dummy_byte; + /*! Resolution for FOC */ + uint8_t resolution; + /*! Define the BMA4 variant BMA42X or BMA45X */ + enum bma4_variant variant; + /* ! Used to check mag manual/auto mode status + int8_t mag_manual_enable;*/ + /*! FIFO related configurations */ + struct bma4_fifo_frame *fifo; + /*! Config stream data buffer address will be assigned*/ + const uint8_t *config_file_ptr; + /*! Max read/write length (maximum supported length is 32). + To be set by the user */ + uint8_t read_write_len; + /*! Feature len */ + uint8_t feature_len; + /*! Contains asic information */ + struct bma4_asic_data asic_data; + /*! Contains aux configuration settings */ + struct bma4_aux_config aux_config; + /*! Bus read function pointer */ + bma4_com_fptr_t bus_read; + /*! Bus write function pointer */ + bma4_com_fptr_t bus_write; + /*! delay(in ms) function pointer */ + bma4_delay_fptr_t delay; }; /*! - * @brief This structure holds the information for usage of - * FIFO by the user. + * @brief This structure holds the information for usage of + * FIFO by the user. */ struct bma4_fifo_frame { - /*! Data buffer of user defined length is to be mapped here */ - uint8_t *data; - /*! Number of bytes of FIFO to be read as specified by the user */ - uint16_t length; - /*! Enabling of the FIFO header to stream in header mode */ - uint8_t fifo_header_enable; - /*! Streaming of the Accelerometer, Auxiliary - * sensor data or both in FIFO */ - uint8_t fifo_data_enable; - /*! Will be equal to length when no more frames are there to parse */ - uint16_t accel_byte_start_idx; - /*! Will be equal to length when no more frames are there to parse */ - uint16_t mag_byte_start_idx; - /*! Will be equal to length when no more frames are there to parse */ - uint16_t sc_frame_byte_start_idx; - /*! Value of FIFO sensor time time */ - uint32_t sensor_time; - /*! Value of Skipped frame counts */ - uint8_t skipped_frame_count; - /*! Value of accel dropped frame count */ - uint8_t accel_dropped_frame_count; - /*! Value of mag dropped frame count */ - uint8_t mag_dropped_frame_count; + /*! Data buffer of user defined length is to be mapped here */ + uint8_t *data; + /*! Number of bytes of FIFO to be read as specified by the user */ + uint16_t length; + /*! Enabling of the FIFO header to stream in header mode */ + uint8_t fifo_header_enable; + /*! Streaming of the Accelerometer, Auxiliary + * sensor data or both in FIFO */ + uint8_t fifo_data_enable; + /*! Will be equal to length when no more frames are there to parse */ + uint16_t accel_byte_start_idx; + /*! Will be equal to length when no more frames are there to parse */ + uint16_t mag_byte_start_idx; + /*! Will be equal to length when no more frames are there to parse */ + uint16_t sc_frame_byte_start_idx; + /*! Value of FIFO sensor time time */ + uint32_t sensor_time; + /*! Value of Skipped frame counts */ + uint8_t skipped_frame_count; + /*! Value of accel dropped frame count */ + uint8_t accel_dropped_frame_count; + /*! Value of mag dropped frame count */ + uint8_t mag_dropped_frame_count; }; /*! - * @brief Error Status structure + * @brief Error Status structure */ struct bma4_err_reg { - /*! Indicates fatal error */ - uint8_t fatal_err; - /*! Indicates command error */ - uint8_t cmd_err; - /*! Indicates error code */ - uint8_t err_code; - /*! Indicates fifo error */ - uint8_t fifo_err; - /*! Indicates mag error */ - uint8_t aux_err; + /*! Indicates fatal error */ + uint8_t fatal_err; + /*! Indicates command error */ + uint8_t cmd_err; + /*! Indicates error code */ + uint8_t err_code; + /*! Indicates fifo error */ + uint8_t fifo_err; + /*! Indicates mag error */ + uint8_t aux_err; }; /*! * @brief Asic Status structure */ struct bma4_asic_status { - /*! Asic is in sleep/halt state */ - uint8_t sleep; - /*! Dedicated interrupt is set again before previous interrupt - was acknowledged */ - uint8_t irq_ovrn; - /*! Watchcell event detected (asic stopped) */ - uint8_t wc_event; - /*! Stream transfer has started and transactions are ongoing */ - uint8_t stream_transfer_active; + /*! Asic is in sleep/halt state */ + uint8_t sleep; + /*! Dedicated interrupt is set again before previous interrupt + was acknowledged */ + uint8_t irq_ovrn; + /*! Watchcell event detected (asic stopped) */ + uint8_t wc_event; + /*! Stream transfer has started and transactions are ongoing */ + uint8_t stream_transfer_active; }; /*! * @brief Interrupt Pin Configuration structure */ -struct bma4_int_pin_config { - /*! Trigger condition of interrupt pin */ - uint8_t edge_ctrl; - /*! Level of interrupt pin */ - uint8_t lvl; - /*! Behaviour of interrupt pin to open drain */ - uint8_t od; - /*! Output enable for interrupt pin */ - uint8_t output_en; - /*! Input enable for interrupt pin */ - uint8_t input_en; +struct bma4_int_pin_config { + /*! Trigger condition of interrupt pin */ + uint8_t edge_ctrl; + /*! Level of interrupt pin */ + uint8_t lvl; + /*! Behaviour of interrupt pin to open drain */ + uint8_t od; + /*! Output enable for interrupt pin */ + uint8_t output_en; + /*! Input enable for interrupt pin */ + uint8_t input_en; }; /*! * @brief Accelerometer configuration structure */ struct bma4_accel_config { - /*! Output data rate in Hz */ - uint8_t odr; - /*! Bandwidth parameter, determines filter configuration */ - uint8_t bandwidth; - /*! Filter performance mode */ - uint8_t perf_mode; - /*! G-range */ - uint8_t range; + /*! Output data rate in Hz */ + uint8_t odr; + /*! Bandwidth parameter, determines filter configuration */ + uint8_t bandwidth; + /*! Filter performance mode */ + uint8_t perf_mode; + /*! G-range */ + uint8_t range; }; /*! * @brief Auxiliary magnetometer configuration structure */ struct bma4_aux_mag_config { - /*! Poll rate for the sensor attached to the Magnetometer interface */ - uint8_t odr; - /*! Trigger-readout offset in units of 2.5 ms. - If set to zero, the offset is maximum, i.e. after readout a trigger - is issued immediately */ - uint8_t offset; + /*! Poll rate for the sensor attached to the Magnetometer interface */ + uint8_t odr; + /*! Trigger-readout offset in units of 2.5 ms. + If set to zero, the offset is maximum, i.e. after readout a trigger + is issued immediately */ + uint8_t offset; }; /*! * @brief ASIC Config structure */ struct bma4_asic_config { - /*! Enable/Disable ASIC Wake Up */ - uint8_t asic_en; - /*! Configure stream_transfer/FIFO mode */ - uint8_t fifo_mode_en; - /*! Mapping of instance RAM1 */ - uint8_t mem_conf_ram1; - /*! Mapping of instance RAM2 */ - uint8_t mem_conf_ram2; - /*! Mapping of instance RAM3 */ - uint8_t mem_conf_ram3; + /*! Enable/Disable ASIC Wake Up */ + uint8_t asic_en; + /*! Configure stream_transfer/FIFO mode */ + uint8_t fifo_mode_en; + /*! Mapping of instance RAM1 */ + uint8_t mem_conf_ram1; + /*! Mapping of instance RAM2 */ + uint8_t mem_conf_ram2; + /*! Mapping of instance RAM3 */ + uint8_t mem_conf_ram3; }; /*! * @brief bmm150 or akm09916 - * magnetometer values structure + * magnetometer values structure */ struct bma4_mag { - /*! BMM150 and AKM09916 X raw data */ - int32_t x; - /*! BMM150 and AKM09916 Y raw data */ - int32_t y; - /*! BMM150 and AKM09916 Z raw data */ - int32_t z; + /*! BMM150 and AKM09916 X raw data */ + int32_t x; + /*! BMM150 and AKM09916 Y raw data */ + int32_t y; + /*! BMM150 and AKM09916 Z raw data */ + int32_t z; }; /*! * @brief bmm150 xyz data structure */ struct bma4_mag_xyzr { - /*! BMM150 X raw data */ - int16_t x; - /*! BMM150 Y raw data */ - int16_t y; - /*! BMM150 Z raw data */ - int16_t z; - /*! BMM150 R raw data */ - uint16_t r; + /*! BMM150 X raw data */ + int16_t x; + /*! BMM150 Y raw data */ + int16_t y; + /*! BMM150 Z raw data */ + int16_t z; + /*! BMM150 R raw data */ + uint16_t r; }; /*! * @brief Accel xyz data structure */ struct bma4_accel { - /*! Accel X data */ - int16_t x; - /*! Accel Y data */ - int16_t y; - /*! Accel Z data */ - int16_t z; + /*! Accel X data */ + int16_t x; + /*! Accel Y data */ + int16_t y; + /*! Accel Z data */ + int16_t z; }; /*! * @brief FIFO mag data structure */ struct bma4_mag_fifo_data { - /*! The value of mag x LSB data */ - uint8_t mag_x_lsb; - /*! The value of mag x MSB data */ - uint8_t mag_x_msb; - /*! The value of mag y LSB data */ - uint8_t mag_y_lsb; - /*! The value of mag y MSB data */ - uint8_t mag_y_msb; - /*! The value of mag z LSB data */ - uint8_t mag_z_lsb; - /*! The value of mag z MSB data */ - uint8_t mag_z_msb; - /*! The value of mag r for BMM150 Y2 for YAMAHA LSB data */ - uint8_t mag_r_y2_lsb; - /*! The value of mag r for BMM150 Y2 for YAMAHA MSB data */ - uint8_t mag_r_y2_msb; + /*! The value of mag x LSB data */ + uint8_t mag_x_lsb; + /*! The value of mag x MSB data */ + uint8_t mag_x_msb; + /*! The value of mag y LSB data */ + uint8_t mag_y_lsb; + /*! The value of mag y MSB data */ + uint8_t mag_y_msb; + /*! The value of mag z LSB data */ + uint8_t mag_z_lsb; + /*! The value of mag z MSB data */ + uint8_t mag_z_msb; + /*! The value of mag r for BMM150 Y2 for YAMAHA LSB data */ + uint8_t mag_r_y2_lsb; + /*! The value of mag r for BMM150 Y2 for YAMAHA MSB data */ + uint8_t mag_r_y2_msb; }; #endif -/* End of __BMA4_H__ */ \ No newline at end of file +/* End of __BMA4_H__ */ diff --git a/src/config.h b/src/config.h new file mode 100644 index 0000000..95ee488 --- /dev/null +++ b/src/config.h @@ -0,0 +1,59 @@ +#ifndef CONFIG_H +#define CONFIG_H + +//pins +#define SDA 21 +#define SCL 22 +#define ADC_PIN 33 +#define RTC_PIN GPIO_NUM_27 +#define CS 5 +#define DC 10 +#define RESET 9 +#define BUSY 19 +#define VIB_MOTOR_PIN 13 +#define MENU_BTN_PIN 26 +#define BACK_BTN_PIN 25 +#define UP_BTN_PIN 32 +#define DOWN_BTN_PIN 4 +#define MENU_BTN_MASK GPIO_SEL_26 +#define BACK_BTN_MASK GPIO_SEL_25 +#define UP_BTN_MASK GPIO_SEL_32 +#define DOWN_BTN_MASK GPIO_SEL_4 +#define ACC_INT_MASK GPIO_SEL_14 +#define BTN_PIN_MASK MENU_BTN_MASK|BACK_BTN_MASK|UP_BTN_MASK|DOWN_BTN_MASK +//display +#define DISPLAY_WIDTH 200 +#define DISPLAY_HEIGHT 200 +//weather api +#define CITY_NAME "NEW+YORK" //if your city name has a space, replace with '+' +#define COUNTRY_CODE "US" +#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :) +#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?q=" +#define TEMP_UNIT "metric" //use "imperial" for Fahrenheit" +//wifi +#define WIFI_AP_TIMEOUT 60 +#define WIFI_AP_SSID "Watchy AP" +//menu +#define WATCHFACE_STATE -1 +#define MAIN_MENU_STATE 0 +#define APP_STATE 1 +#define FW_UPDATE_STATE 2 +#define MENU_HEIGHT 30 +#define MENU_LENGTH 6 +//set time +#define SET_HOUR 0 +#define SET_MINUTE 1 +#define SET_YEAR 2 +#define SET_MONTH 3 +#define SET_DAY 4 +#define YEAR_OFFSET 1970 +//BLE OTA +#define BLE_DEVICE_NAME "Watchy BLE OTA" +#define WATCHFACE_NAME "Watchy 7 Segment" +#define SOFTWARE_VERSION_MAJOR 1 +#define SOFTWARE_VERSION_MINOR 0 +#define SOFTWARE_VERSION_PATCH 0 +#define HARDWARE_VERSION_MAJOR 1 +#define HARDWARE_VERSION_MINOR 0 + +#endif \ No newline at end of file diff --git a/src/i2c_bus.cpp b/src/i2c_bus.cpp deleted file mode 100644 index 8487eb2..0000000 --- a/src/i2c_bus.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "i2c_bus.h" -#include "Wire.h" -#include - -void I2CBus::scan(void) -{ - uint8_t err, addr; - int nDevices = 0; - for (addr = 1; addr < 127; addr++) { - _port->beginTransmission(addr); - err = _port->endTransmission(); - if (err == 0) { - Serial.print("I2C device found at address 0x"); - if (addr < 16) - Serial.print("0"); - Serial.print(addr, HEX); - Serial.println(" !"); - nDevices++; - } else if (err == 4) { - Serial.print("Unknow error at address 0x"); - if (addr < 16) - Serial.print("0"); - Serial.println(addr, HEX); - } - } - if (nDevices == 0) - Serial.println("No I2C devices found\n"); - else - Serial.println("done\n"); -} - - -uint16_t I2CBus::readBytes(uint8_t addr, uint8_t *data, uint16_t len, uint16_t delay_ms) -{ - uint16_t ret = 0; - uint8_t cnt = _port->requestFrom(addr, (uint8_t)len, (uint8_t)1); - if (!cnt) { - ret = 1 << 13; - } - uint16_t index = 0; - while (_port->available()) { - if (index > len)return 1 << 14; - if (delay_ms)delay(delay_ms); - data[index++] = _port->read(); - } - return ret; -} - - -uint16_t I2CBus::readBytes(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) -{ - uint16_t ret = 0; - _port->beginTransmission(addr); - _port->write(reg); - _port->endTransmission(); - uint8_t cnt = _port->requestFrom(addr, (uint8_t)len, (uint8_t)1); - if (!cnt) { - ret = 1 << 13; - } - uint16_t index = 0; - while (_port->available()) { - if (index > len)return 1 << 14; - data[index++] = _port->read(); - } - return ret; -} - -uint16_t I2CBus::writeBytes(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len) -{ - uint16_t ret = 0; - _port->beginTransmission(addr); - _port->write(reg); - for (uint16_t i = 0; i < len; i++) { - _port->write(data[i]); - } - ret = _port->endTransmission(); - return ret ? 1 << 12 : ret; -} - -bool I2CBus::deviceProbe(uint8_t addr) -{ - uint16_t ret = 0; - _port->beginTransmission(addr); - ret = _port->endTransmission(); - return (ret == 0); -} \ No newline at end of file diff --git a/src/i2c_bus.h b/src/i2c_bus.h deleted file mode 100644 index 78c589f..0000000 --- a/src/i2c_bus.h +++ /dev/null @@ -1,18 +0,0 @@ -#include - -class I2CBus -{ -public: - I2CBus(TwoWire &port = Wire, int sda = 21, int scl = 22) - { - _port = &port; - _port->begin(sda, scl); - }; - void scan(); - uint16_t readBytes(uint8_t addr, uint8_t *data, uint16_t len, uint16_t delay_ms = 0); - uint16_t readBytes(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len); - uint16_t writeBytes(uint8_t addr, uint8_t reg, uint8_t *data, uint16_t len); - bool deviceProbe(uint8_t addr); -private: - TwoWire *_port; -}; \ No newline at end of file