diff --git a/lib/BrbBase/src/BrbBase.cpp b/lib/BrbBase/src/BrbBase.cpp index b4fdcfe..ab13656 100644 --- a/lib/BrbBase/src/BrbBase.cpp +++ b/lib/BrbBase/src/BrbBase.cpp @@ -1,272 +1,272 @@ -/* - * BrbBase.cpp - * - * Created on: 2018-10-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbBase.h" -#include - -/**********************************************************************************************************************/ -void BrbBaseInit(BrbBase *brb_base) -{ - LOG_DEBUG(brb_base->log_base, "BRB - INITIALIZE\r\n"); - - /* Load data */ - BrbBase_DataLoad(brb_base); - - /* Initialize Script Base */ - BrbMicroScriptBase_Init(&brb_base->script_base); - - brb_base->stats.loop_cnt = 0; - brb_base->data.upcount = brb_base->data.upcount + 1; - - return; -} -/**********************************************************************************************************************/ -void BrbBaseLoop(BrbBase *brb_base) -{ - brb_base->stats.loop_cnt = brb_base->stats.loop_cnt + 1; - - /* Update timer counts */ - brb_base->ms.last = brb_base->ms.cur; - brb_base->ms.cur = millis(); - brb_base->ms.delay = brb_base->ms.cur - brb_base->ms.last; - - brb_base->us.last = brb_base->us.cur; - brb_base->us.cur = micros(); - brb_base->us.delay = brb_base->us.cur - brb_base->us.last; - - brb_base->ms.lifetime_delay = brb_base->ms.lifetime_delay + brb_base->ms.delay; - - /* 5 seconds delay */ - if (brb_base->ms.lifetime_delay > 5000) - { - brb_base->ms.lifetime_delay = (brb_base->ms.lifetime_delay - 5000); - - brb_base->ms.lifetime_sec = brb_base->ms.lifetime_sec + 5; - brb_base->data.lifetime_sec = brb_base->data.lifetime_sec + 5; - - /* Save every 60 seconds */ - if (brb_base->ms.lifetime_sec > 60) - { - brb_base->ms.lifetime_sec = (brb_base->ms.lifetime_sec - 60); - - BrbBase_DataSave(brb_base); - } - } - - /* Dispatch Timers */ - BrbTimerDispatch(brb_base); - - // /* Check Configuration - to be done */ - // BrbConfigBase_Loop(&brb_base->config_base); - - /* Run all scripts */ - BrbMicroScriptBase_RunAll(&brb_base->script_base); - - return; -} -/**********************************************************************************************************************/ -void BrbBase_DataLoad(BrbBase *brb_base) -{ - LOG_DEBUG(brb_base->log_base, "BRB - DATA LOAD\r\n"); - - /* Read EEPROM */ - BrbBase_EEPROMRead(brb_base, (uint8_t *)&brb_base->data, sizeof(brb_base->data), 0); - - return; -} -/**********************************************************************************************************************/ -void BrbBase_DataSave(BrbBase *brb_base) -{ - LOG_DEBUG(brb_base->log_base, "BRB - DATA SAVE\r\n"); - - /* Save to EEPROM */ - BrbBase_EEPROMWrite(brb_base, (uint8_t *)&brb_base->data, sizeof(brb_base->data), 0); - - return; -} -/**********************************************************************************************************************/ -// void BrbBase_PinSet(BrbBase *brb_base, int pin_num, int pin_mode, int pin_value) -// { -// LOG_DEBUG(brb_base->log_base, "BRB - PIN SET\r\n"); - -// byte pin_code; -// // || pin_num > sizeof(glob_analog_pins) -// if (pin_num < MAX_DIG_PIN) -// pin_code = pin_num; -// else -// pin_code = glob_analog_pins[MAX_DIG_PIN - pin_num]; - -// // LOG_NOTICE(brb_base->log_base, "SET PIN [%u/%u] - mode:%u v:%u\r\n", pin_num, pin_code, pin_mode, pin_value); - -// /* Check output, set value */ -// if (pin_mode == OUTPUT) -// { -// pinMode(pin_code, OUTPUT); - -// if (pin_code < MAX_DIG_PIN) -// digitalWrite(pin_code, (pin_value == HIGH) ? HIGH : LOW); -// else -// analogWrite(pin_code, pin_value); -// } -// else if (pin_mode == INPUT_PULLUP) -// pinMode(pin_code, INPUT_PULLUP); -// else if (pin_mode == INPUT) -// pinMode(pin_code, INPUT); - -// return; -// } -/**********************************************************************************************************************/ -uint8_t BrbBase_PinGetMode(uint8_t pin) -{ - uint8_t bit = digitalPinToBitMask(pin); - uint8_t port = digitalPinToPort(pin); - - // I don't see an option for mega to return this, but whatever... - // if (NOT_A_PIN == port) - // return 0xFF; - - // // Is there a bit we can check? - // if (0 == bit) - // return 0xFF; - - // // Is there only a single bit set? - // if ((bit & bit) - 1) - // return 0xFF; - - volatile uint8_t *reg = portModeRegister(port); - - if (*reg & bit) - return OUTPUT; - - volatile uint8_t *out = portOutputRegister(port); - - if (*out & bit) - return INPUT_PULLUP; - else - return INPUT; -} - -/**********************************************************************************************************************/ -uint8_t BrbBase_PinGetAnalogPin(uint8_t pin) -{ -#if defined(analogPinToChannel) -#if defined(__AVR_ATmega32U4__) - if (pin < 18) pin += 18; // allow for channel or pin numbers -#endif - pin = analogPinToChannel(pin); -#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - if (pin < 54) pin += 54; // allow for channel or pin numbers -#elif defined(__AVR_ATmega32U4__) - if (pin < 18) pin += 18; // allow for channel or pin numbers -#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) - if (pin < 24) pin += 24; // allow for channel or pin numbers -#else - if (pin < 14) pin += 14; // allow for channel or pin numbers -#endif - - return pin; -} -/**********************************************************************************************************************/ -int BrbBase_EEPROMRead(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset) -{ - int byte_read; - - if (!brb_base || !data_ptr) - return -1; - - LOG_DEBUG(brb_base->log_base, "BRB - EEPROM read %d %d\r\n", eeprom_offset, data_sz); - - byte_read = EEPROM.read(eeprom_offset++); - - if (byte_read != BRB_EEPROM_MAGIC) - { - /* Reset info */ - memset(data_ptr, 0, data_sz); - - return -1; - } - - for (int i = 0; i < data_sz; i++) - { - data_ptr[i] = EEPROM.read(eeprom_offset++); - } - - byte_read = EEPROM.read(eeprom_offset++); - - if (byte_read != BRB_EEPROM_MAGIC) - { - /* Reset info */ - memset(data_ptr, 0, data_sz); - - return 0; - } - - return 0; -} -/**********************************************************************************************************************/ -int BrbBase_EEPROMWrite(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset) -{ - if (!brb_base || !data_ptr) - return -1; - - LOG_DEBUG(brb_base->log_base, "BRB - EEPROM write %d %d\r\n", eeprom_offset, data_sz); - - EEPROM.write(eeprom_offset++, BRB_EEPROM_MAGIC); - - for (int i = 0; i < data_sz; i++) - { - EEPROM.write(eeprom_offset++, data_ptr[i]); - } - - EEPROM.write(eeprom_offset++, BRB_EEPROM_MAGIC); - - return 0; -} -/**********************************************************************************************************************/ -int BrbBase_FreeRAM(void) -{ -#if defined(ESP8266) || defined(ESP32) - return ESP.getFreeHeap(); -#elif defined(AVR) - // taken from - // https://learn.adafruit.com/memories-of-an-arduino/measuring-free-memory - extern uintptr_t __heap_start; - extern void *__brkval; - intptr_t v; - return (uintptr_t)&v - - (__brkval == 0 ? (uintptr_t)&__heap_start : (uintptr_t)__brkval); -#else - return 0; -#endif -} +/* + * BrbBase.cpp + * + * Created on: 2018-10-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbBase.h" +#include + +/**********************************************************************************************************************/ +void BrbBaseInit(BrbBase *brb_base) +{ + LOG_DEBUG(brb_base->log_base, "BRB - INITIALIZE\r\n"); + + /* Load data */ + BrbBase_DataLoad(brb_base); + + /* Initialize Script Base */ + BrbMicroScriptBase_Init(&brb_base->script_base); + + brb_base->stats.loop_cnt = 0; + brb_base->data.upcount = brb_base->data.upcount + 1; + + return; +} +/**********************************************************************************************************************/ +void BrbBaseLoop(BrbBase *brb_base) +{ + brb_base->stats.loop_cnt = brb_base->stats.loop_cnt + 1; + + /* Update timer counts */ + brb_base->ms.last = brb_base->ms.cur; + brb_base->ms.cur = millis(); + brb_base->ms.delay = brb_base->ms.cur - brb_base->ms.last; + + brb_base->us.last = brb_base->us.cur; + brb_base->us.cur = micros(); + brb_base->us.delay = brb_base->us.cur - brb_base->us.last; + + brb_base->ms.lifetime_delay = brb_base->ms.lifetime_delay + brb_base->ms.delay; + + /* 5 seconds delay */ + if (brb_base->ms.lifetime_delay > 5000) + { + brb_base->ms.lifetime_delay = (brb_base->ms.lifetime_delay - 5000); + + brb_base->ms.lifetime_sec = brb_base->ms.lifetime_sec + 5; + brb_base->data.lifetime_sec = brb_base->data.lifetime_sec + 5; + + /* Save every 60 seconds */ + if (brb_base->ms.lifetime_sec > 60) + { + brb_base->ms.lifetime_sec = (brb_base->ms.lifetime_sec - 60); + + BrbBase_DataSave(brb_base); + } + } + + /* Dispatch Timers */ + BrbTimerDispatch(brb_base); + + // /* Check Configuration - to be done */ + // BrbConfigBase_Loop(&brb_base->config_base); + + /* Run all scripts */ + BrbMicroScriptBase_RunAll(&brb_base->script_base); + + return; +} +/**********************************************************************************************************************/ +void BrbBase_DataLoad(BrbBase *brb_base) +{ + LOG_DEBUG(brb_base->log_base, "BRB - DATA LOAD\r\n"); + + /* Read EEPROM */ + BrbBase_EEPROMRead(brb_base, (uint8_t *)&brb_base->data, sizeof(brb_base->data), 0); + + return; +} +/**********************************************************************************************************************/ +void BrbBase_DataSave(BrbBase *brb_base) +{ + LOG_DEBUG(brb_base->log_base, "BRB - DATA SAVE\r\n"); + + /* Save to EEPROM */ + BrbBase_EEPROMWrite(brb_base, (uint8_t *)&brb_base->data, sizeof(brb_base->data), 0); + + return; +} +/**********************************************************************************************************************/ +// void BrbBase_PinSet(BrbBase *brb_base, int pin_num, int pin_mode, int pin_value) +// { +// LOG_DEBUG(brb_base->log_base, "BRB - PIN SET\r\n"); + +// byte pin_code; +// // || pin_num > sizeof(glob_analog_pins) +// if (pin_num < MAX_DIG_PIN) +// pin_code = pin_num; +// else +// pin_code = glob_analog_pins[MAX_DIG_PIN - pin_num]; + +// // LOG_NOTICE(brb_base->log_base, "SET PIN [%u/%u] - mode:%u v:%u\r\n", pin_num, pin_code, pin_mode, pin_value); + +// /* Check output, set value */ +// if (pin_mode == OUTPUT) +// { +// pinMode(pin_code, OUTPUT); + +// if (pin_code < MAX_DIG_PIN) +// digitalWrite(pin_code, (pin_value == HIGH) ? HIGH : LOW); +// else +// analogWrite(pin_code, pin_value); +// } +// else if (pin_mode == INPUT_PULLUP) +// pinMode(pin_code, INPUT_PULLUP); +// else if (pin_mode == INPUT) +// pinMode(pin_code, INPUT); + +// return; +// } +/**********************************************************************************************************************/ +uint8_t BrbBase_PinGetMode(uint8_t pin) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + // I don't see an option for mega to return this, but whatever... + // if (NOT_A_PIN == port) + // return 0xFF; + + // // Is there a bit we can check? + // if (0 == bit) + // return 0xFF; + + // // Is there only a single bit set? + // if ((bit & bit) - 1) + // return 0xFF; + + volatile uint8_t *reg = portModeRegister(port); + + if (*reg & bit) + return OUTPUT; + + volatile uint8_t *out = portOutputRegister(port); + + if (*out & bit) + return INPUT_PULLUP; + else + return INPUT; +} + +/**********************************************************************************************************************/ +uint8_t BrbBase_PinGetAnalogPin(uint8_t pin) +{ +#if defined(analogPinToChannel) +#if defined(__AVR_ATmega32U4__) + if (pin < 18) pin += 18; // allow for channel or pin numbers +#endif + pin = analogPinToChannel(pin); +#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin < 54) pin += 54; // allow for channel or pin numbers +#elif defined(__AVR_ATmega32U4__) + if (pin < 18) pin += 18; // allow for channel or pin numbers +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) + if (pin < 24) pin += 24; // allow for channel or pin numbers +#else + if (pin < 14) pin += 14; // allow for channel or pin numbers +#endif + + return pin; +} +/**********************************************************************************************************************/ +int BrbBase_EEPROMRead(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset) +{ + int byte_read; + + if (!brb_base || !data_ptr) + return -1; + + LOG_DEBUG(brb_base->log_base, "BRB - EEPROM read %d %d\r\n", eeprom_offset, data_sz); + + byte_read = EEPROM.read(eeprom_offset++); + + if (byte_read != BRB_EEPROM_MAGIC) + { + /* Reset info */ + memset(data_ptr, 0, data_sz); + + return -1; + } + + for (int i = 0; i < data_sz; i++) + { + data_ptr[i] = EEPROM.read(eeprom_offset++); + } + + byte_read = EEPROM.read(eeprom_offset++); + + if (byte_read != BRB_EEPROM_MAGIC) + { + /* Reset info */ + memset(data_ptr, 0, data_sz); + + return 0; + } + + return 0; +} +/**********************************************************************************************************************/ +int BrbBase_EEPROMWrite(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset) +{ + if (!brb_base || !data_ptr) + return -1; + + LOG_DEBUG(brb_base->log_base, "BRB - EEPROM write %d %d\r\n", eeprom_offset, data_sz); + + EEPROM.write(eeprom_offset++, BRB_EEPROM_MAGIC); + + for (int i = 0; i < data_sz; i++) + { + EEPROM.write(eeprom_offset++, data_ptr[i]); + } + + EEPROM.write(eeprom_offset++, BRB_EEPROM_MAGIC); + + return 0; +} +/**********************************************************************************************************************/ +int BrbBase_FreeRAM(void) +{ +#if defined(ESP8266) || defined(ESP32) + return ESP.getFreeHeap(); +#elif defined(AVR) + // taken from + // https://learn.adafruit.com/memories-of-an-arduino/measuring-free-memory + extern uintptr_t __heap_start; + extern void *__brkval; + intptr_t v; + return (uintptr_t)&v - + (__brkval == 0 ? (uintptr_t)&__heap_start : (uintptr_t)__brkval); +#else + return 0; +#endif +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbBase/src/BrbBase.h b/lib/BrbBase/src/BrbBase.h index 1f2ff32..c8818fa 100644 --- a/lib/BrbBase/src/BrbBase.h +++ b/lib/BrbBase/src/BrbBase.h @@ -1,199 +1,199 @@ -/* - * BrbBase.h - * - * Created on: 2018-10-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_BASE_H_ -#define BRB_BASE_H_ - -/**********************************************************************************************************************/ -#include "Arduino.h" -#include -#include -// #include "boards.h" -#include "log/BrbLogBase.h" -#include "data/BrbDLinkedList.h" -#include "data/BrbMicroScript.h" -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) -//Code in here will only be compiled if an Arduino Mega is used. -#endif -#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) -//Code in here will only be compiled if an Arduino Uno (or older) is used. -#endif -#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__) -//Code in here will only be compiled if an Arduino Leonardo is used. -#endif - -#define MAX_TIMER 16 -#define MAX_SCRIPT 8 - -#define MIN_ANA_PIN 0 -#define MAX_ANA_PIN NUM_ANALOG_INPUTS - -#define MIN_DIG_PIN 2 - -// #define MAX_DIG_PIN NUM_DIGITAL_PINS -#define MAX_DIG_PIN PIN_A0 - -#define BRB_EEPROM_MAGIC 157 -#define BRB_EEPROM_MASK 137 -#define BRB_EEPROM_OFFSET 32 - -#define BRB_COMPARE_NUM(a, b) (a > b) - (a < b) - -#define TOTAL_PINS 70 // 54 digital + 16 analog -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ - -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef int BrbGenericCBH(void *, void *); -/**********************************************************/ -typedef struct _BrbTimer -{ - int timer_id; - BrbGenericCBH *cb_func; - void *cb_data; - - struct - { - long when; - int delay; - } ms; - - struct - { - unsigned int persist:1; - unsigned int active:1; - } flags; - -} BrbTimer; -/**********************************************************/ -typedef struct _BrbBasePinData -{ - uint8_t value; - uint8_t mode; - - uint8_t mask; - uint8_t persist:1; - uint8_t pad:7; - -} BrbBasePinData; -/**********************************************************/ -typedef struct _BrbSensorVoltage -{ - double value; - int counter; - int pin; - -} BrbSensorVoltage; - -typedef struct _BrbZeroCross -{ - double value; - int counter; - int pin; - -} BrbZeroCross; -/**********************************************************/ -typedef struct _BrbBase -{ - BrbLogBase *log_base; - BrbBasePinData pin_data[TOTAL_PINS]; - BrbMicroScriptBase script_base; - - struct - { - uint32_t loop_cnt; - } stats; - - struct - { - long last; - long cur; - int delay; - - long lifetime_delay; - long lifetime_sec; - } ms; - - struct - { - long last; - long cur; - int delay; - } us; - - struct - { - int count; - BrbTimer arr[MAX_TIMER]; - } timer; - - struct - { - long long lifetime_sec; - int upcount; - } data; - -} BrbBase; -/**********************************************************************************************************************/ -/* PUBLIC FUNCTIONS */ -/**********************************************************/ -void BrbBaseInit(BrbBase *brb_base); -void BrbBaseLoop(BrbBase *brb_base); - -void BrbBase_DataLoad(BrbBase *brb_base); -void BrbBase_DataSave(BrbBase *brb_base); - -int BrbBase_FreeRAM(void); -/**********************************************************/ -/* BrbTimer */ -/**********************************************************/ -BrbTimer *BrbTimerGrabByID(BrbBase *brb_base, int timer_id); -int BrbTimerAdd(BrbBase *brb_base, long delay_ms, int persist, BrbGenericCBH *cb_func, void *cb_data); -void BrbTimerDispatch(BrbBase *brb_base); - -/**********************************************************/ -/* BrbBase */ -/**********************************************************/ -uint8_t BrbBase_PinGetMode(uint8_t pin); -uint8_t BrbBase_PinGetAnalogPin(uint8_t pin); - -int BrbBase_EEPROMRead(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset); -int BrbBase_EEPROMWrite(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset); -/**********************************************************************************************************************/ +/* + * BrbBase.h + * + * Created on: 2018-10-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_BASE_H_ +#define BRB_BASE_H_ + +/**********************************************************************************************************************/ +#include "Arduino.h" +#include +#include +// #include "boards.h" +#include "log/BrbLogBase.h" +#include "data/BrbDLinkedList.h" +#include "data/BrbMicroScript.h" +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +//Code in here will only be compiled if an Arduino Mega is used. +#endif +#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) +//Code in here will only be compiled if an Arduino Uno (or older) is used. +#endif +#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__) +//Code in here will only be compiled if an Arduino Leonardo is used. +#endif + +#define MAX_TIMER 16 +#define MAX_SCRIPT 8 + +#define MIN_ANA_PIN 0 +#define MAX_ANA_PIN NUM_ANALOG_INPUTS + +#define MIN_DIG_PIN 2 + +// #define MAX_DIG_PIN NUM_DIGITAL_PINS +#define MAX_DIG_PIN PIN_A0 + +#define BRB_EEPROM_MAGIC 157 +#define BRB_EEPROM_MASK 137 +#define BRB_EEPROM_OFFSET 32 + +#define BRB_COMPARE_NUM(a, b) (a > b) - (a < b) + +#define TOTAL_PINS 70 // 54 digital + 16 analog +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ + +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef int BrbGenericCBH(void *, void *); +/**********************************************************/ +typedef struct _BrbTimer +{ + int timer_id; + BrbGenericCBH *cb_func; + void *cb_data; + + struct + { + long when; + int delay; + } ms; + + struct + { + unsigned int persist:1; + unsigned int active:1; + } flags; + +} BrbTimer; +/**********************************************************/ +typedef struct _BrbBasePinData +{ + uint8_t value; + uint8_t mode; + + uint8_t mask; + uint8_t persist:1; + uint8_t pad:7; + +} BrbBasePinData; +/**********************************************************/ +typedef struct _BrbSensorVoltage +{ + double value; + int counter; + int pin; + +} BrbSensorVoltage; + +typedef struct _BrbZeroCross +{ + double value; + int counter; + int pin; + +} BrbZeroCross; +/**********************************************************/ +typedef struct _BrbBase +{ + BrbLogBase *log_base; + BrbBasePinData pin_data[TOTAL_PINS]; + BrbMicroScriptBase script_base; + + struct + { + uint32_t loop_cnt; + } stats; + + struct + { + long last; + long cur; + int delay; + + long lifetime_delay; + long lifetime_sec; + } ms; + + struct + { + long last; + long cur; + int delay; + } us; + + struct + { + int count; + BrbTimer arr[MAX_TIMER]; + } timer; + + struct + { + long long lifetime_sec; + int upcount; + } data; + +} BrbBase; +/**********************************************************************************************************************/ +/* PUBLIC FUNCTIONS */ +/**********************************************************/ +void BrbBaseInit(BrbBase *brb_base); +void BrbBaseLoop(BrbBase *brb_base); + +void BrbBase_DataLoad(BrbBase *brb_base); +void BrbBase_DataSave(BrbBase *brb_base); + +int BrbBase_FreeRAM(void); +/**********************************************************/ +/* BrbTimer */ +/**********************************************************/ +BrbTimer *BrbTimerGrabByID(BrbBase *brb_base, int timer_id); +int BrbTimerAdd(BrbBase *brb_base, long delay_ms, int persist, BrbGenericCBH *cb_func, void *cb_data); +void BrbTimerDispatch(BrbBase *brb_base); + +/**********************************************************/ +/* BrbBase */ +/**********************************************************/ +uint8_t BrbBase_PinGetMode(uint8_t pin); +uint8_t BrbBase_PinGetAnalogPin(uint8_t pin); + +int BrbBase_EEPROMRead(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset); +int BrbBase_EEPROMWrite(BrbBase *brb_base, uint8_t *data_ptr, uint8_t data_sz, uint8_t eeprom_offset); +/**********************************************************************************************************************/ #endif /* BRB_BASE_H_ */ \ No newline at end of file diff --git a/lib/BrbBase/src/BrbTimer.cpp b/lib/BrbBase/src/BrbTimer.cpp index bd1a856..afa1cb9 100644 --- a/lib/BrbBase/src/BrbTimer.cpp +++ b/lib/BrbBase/src/BrbTimer.cpp @@ -1,139 +1,139 @@ -/* - * BrbTimer.cpp - * - * Created on: 2019-01-04 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbBase.h" - -/**********************************************************************************************************************/ -BrbTimer *BrbTimerGrabByID(BrbBase *brb_base, int timer_id) -{ - BrbTimer *timer; - - /* Sanity check */ - if (timer_id > MAX_TIMER) - return NULL; - - timer = &brb_base->timer.arr[timer_id]; - - return timer; -} -/**********************************************************************************************************************/ -int BrbTimerAdd(BrbBase *brb_base, long delay_ms, int persist, BrbGenericCBH *cb_func, void *cb_data) -{ - BrbTimer *timer; - int i; - - timer = NULL; - - LOG_DEBUG(brb_base->log_base, "Will add timer with delay [%u] - Persist [%u]\r\n", delay_ms, persist); - - /* Select a free timer slot from array */ - for (i = 0; i < MAX_TIMER; i++) - { - if (!brb_base->timer.arr[i].flags.active) - { - /* Fill up timer data */ - timer = &brb_base->timer.arr[i]; - timer->timer_id = i; - timer->cb_func = cb_func; - timer->cb_data = cb_data; - - /* Calculate when */ - timer->ms.when = brb_base->ms.cur + delay_ms; - timer->ms.delay = delay_ms; - - /* Set flags */ - timer->flags.persist = ((persist == 1) ? 1 : 0); - timer->flags.active = 1; - - LOG_DEBUG(brb_base->log_base, "Added timer ID [%u] with delay [%u] - C/W [%u / %u]\r\n", - timer->timer_id, timer->ms.delay, brb_base->ms.cur, timer->ms.when); - break; - } - continue; - } - - /* No more timers */ - if (!timer) - { - LOG_WARN(brb_base->log_base, "Failed adding timer - Table exhausted\r\n"); - return -1; - } - - return timer->timer_id; -} -/**********************************************************************************************************************/ -void BrbTimerDispatch(BrbBase *brb_base) -{ - BrbTimer *timer; - int i; - - timer = NULL; - - /* Walk all timers */ - for (i = 0; i < MAX_TIMER; i++) - { - /* Ignore inactive timers */ - if (!brb_base->timer.arr[i].flags.active) - continue; - - /* Grab timer */ - timer = &brb_base->timer.arr[i]; - - // LOG_INFO(brb_base->log_base, "TID [%u] - W/C/D/P [%u %u %u %u]\r\n", timer->timer_id, timer->ms.when, brb_base->ms.cur, timer->ms.delay, timer->flags.persist); - - /* Timer need to be dispatched */ - if (timer->ms.when <= brb_base->ms.cur) - { - LOG_INFO(brb_base->log_base, "TIME [%ld] - TID [%u] - Dispatch\r\n", brb_base->ms.cur, timer->timer_id); - - /* Invoke timer CBH */ - if (timer->cb_func) - timer->cb_func(timer, timer->cb_data); - - /* Readjust WHEN if timer is persistent */ - if (timer->flags.persist) - { - timer->ms.when = brb_base->ms.cur + timer->ms.delay; - // LOG_INFO(brb_base->log_base, "TID [%u] - NW [%u] - D [%u]\r\n", timer->timer_id, timer->ms.when, timer->ms.delay); - } - /* Disable volatile timer */ - else - { - timer->flags.active = 0; - } - } - - continue; - } -} +/* + * BrbTimer.cpp + * + * Created on: 2019-01-04 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbBase.h" + +/**********************************************************************************************************************/ +BrbTimer *BrbTimerGrabByID(BrbBase *brb_base, int timer_id) +{ + BrbTimer *timer; + + /* Sanity check */ + if (timer_id > MAX_TIMER) + return NULL; + + timer = &brb_base->timer.arr[timer_id]; + + return timer; +} +/**********************************************************************************************************************/ +int BrbTimerAdd(BrbBase *brb_base, long delay_ms, int persist, BrbGenericCBH *cb_func, void *cb_data) +{ + BrbTimer *timer; + int i; + + timer = NULL; + + LOG_DEBUG(brb_base->log_base, "Will add timer with delay [%u] - Persist [%u]\r\n", delay_ms, persist); + + /* Select a free timer slot from array */ + for (i = 0; i < MAX_TIMER; i++) + { + if (!brb_base->timer.arr[i].flags.active) + { + /* Fill up timer data */ + timer = &brb_base->timer.arr[i]; + timer->timer_id = i; + timer->cb_func = cb_func; + timer->cb_data = cb_data; + + /* Calculate when */ + timer->ms.when = brb_base->ms.cur + delay_ms; + timer->ms.delay = delay_ms; + + /* Set flags */ + timer->flags.persist = ((persist == 1) ? 1 : 0); + timer->flags.active = 1; + + LOG_DEBUG(brb_base->log_base, "Added timer ID [%u] with delay [%u] - C/W [%u / %u]\r\n", + timer->timer_id, timer->ms.delay, brb_base->ms.cur, timer->ms.when); + break; + } + continue; + } + + /* No more timers */ + if (!timer) + { + LOG_WARN(brb_base->log_base, "Failed adding timer - Table exhausted\r\n"); + return -1; + } + + return timer->timer_id; +} +/**********************************************************************************************************************/ +void BrbTimerDispatch(BrbBase *brb_base) +{ + BrbTimer *timer; + int i; + + timer = NULL; + + /* Walk all timers */ + for (i = 0; i < MAX_TIMER; i++) + { + /* Ignore inactive timers */ + if (!brb_base->timer.arr[i].flags.active) + continue; + + /* Grab timer */ + timer = &brb_base->timer.arr[i]; + + // LOG_INFO(brb_base->log_base, "TID [%u] - W/C/D/P [%u %u %u %u]\r\n", timer->timer_id, timer->ms.when, brb_base->ms.cur, timer->ms.delay, timer->flags.persist); + + /* Timer need to be dispatched */ + if (timer->ms.when <= brb_base->ms.cur) + { + LOG_INFO(brb_base->log_base, "TIME [%ld] - TID [%u] - Dispatch\r\n", brb_base->ms.cur, timer->timer_id); + + /* Invoke timer CBH */ + if (timer->cb_func) + timer->cb_func(timer, timer->cb_data); + + /* Readjust WHEN if timer is persistent */ + if (timer->flags.persist) + { + timer->ms.when = brb_base->ms.cur + timer->ms.delay; + // LOG_INFO(brb_base->log_base, "TID [%u] - NW [%u] - D [%u]\r\n", timer->timer_id, timer->ms.when, timer->ms.delay); + } + /* Disable volatile timer */ + else + { + timer->flags.active = 0; + } + } + + continue; + } +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbBase/src/crypto/BrbCrypto.cpp b/lib/BrbBase/src/crypto/BrbCrypto.cpp index beb6000..a5730b8 100644 --- a/lib/BrbBase/src/crypto/BrbCrypto.cpp +++ b/lib/BrbBase/src/crypto/BrbCrypto.cpp @@ -1,73 +1,73 @@ -/* - * BrbCrypto.cpp - * - * Created on: 2019-01-04 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbBase.h" - -#define RC4_SWAP(S,a,b) do { int t = S[a]; S[a] = S[b]; S[b] = t; } while(0) - -/**********************************************************************************************************************/ -int BrbCryptoRC4(char *key, uint8_t key_sz, char *data, uint8_t data_sz, char *dst_buf, uint8_t dst_buf_sz) -{ - unsigned char crypto_buf[(data_sz / 2) + 1]; - uint8_t i, j, k = 0; - uint8_t crypto_sz = sizeof(crypto_buf); - - for (i = 0; i < crypto_sz; i++) - { - crypto_buf[i] = i; - continue; - } - - for (i = 0; i < crypto_sz ; i++) - { - j = ((j + crypto_buf[i] + key[i % key_sz]) % crypto_sz); - RC4_SWAP(crypto_buf, crypto_buf[i], crypto_buf[j]); - continue; - } - - i = j = 0; - - for (k = 0; k < data_sz; k++) - { - i = ((i + 1) % crypto_sz); - j = ((j + crypto_buf[i]) % crypto_sz); - RC4_SWAP(crypto_buf, crypto_buf[i], crypto_buf[j]); - - /* Write encrypted data into buffer */ - dst_buf[k] = data[k] ^ crypto_buf[(crypto_buf[i] + crypto_buf[j]) % crypto_sz]; - continue; - } - - return 1; -} +/* + * BrbCrypto.cpp + * + * Created on: 2019-01-04 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbBase.h" + +#define RC4_SWAP(S,a,b) do { int t = S[a]; S[a] = S[b]; S[b] = t; } while(0) + +/**********************************************************************************************************************/ +int BrbCryptoRC4(char *key, uint8_t key_sz, char *data, uint8_t data_sz, char *dst_buf, uint8_t dst_buf_sz) +{ + unsigned char crypto_buf[(data_sz / 2) + 1]; + uint8_t i, j, k = 0; + uint8_t crypto_sz = sizeof(crypto_buf); + + for (i = 0; i < crypto_sz; i++) + { + crypto_buf[i] = i; + continue; + } + + for (i = 0; i < crypto_sz ; i++) + { + j = ((j + crypto_buf[i] + key[i % key_sz]) % crypto_sz); + RC4_SWAP(crypto_buf, crypto_buf[i], crypto_buf[j]); + continue; + } + + i = j = 0; + + for (k = 0; k < data_sz; k++) + { + i = ((i + 1) % crypto_sz); + j = ((j + crypto_buf[i]) % crypto_sz); + RC4_SWAP(crypto_buf, crypto_buf[i], crypto_buf[j]); + + /* Write encrypted data into buffer */ + dst_buf[k] = data[k] ^ crypto_buf[(crypto_buf[i] + crypto_buf[j]) % crypto_sz]; + continue; + } + + return 1; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbBase/src/data/BrbDLinkedList.cpp b/lib/BrbBase/src/data/BrbDLinkedList.cpp index 25b1628..8188ddb 100644 --- a/lib/BrbBase/src/data/BrbDLinkedList.cpp +++ b/lib/BrbBase/src/data/BrbDLinkedList.cpp @@ -1,857 +1,857 @@ -/* - * BrbDLinkedList.cpp - * - * Created on: 2019-02-11 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * - * Copyright (c) 2019 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbDLinkedList.h" - -static BrbDLinkedListNode *BrbDLinkedListMergeSortFunc(BrbDLinkedListNode *head, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); - -/**************************************************************************************************************************/ -void BrbDLinkedListInit(BrbDLinkedList *list, int thread_safe) -{ - /* Clean up list data */ - memset(list, 0, sizeof(BrbDLinkedList)); - - /* Set MT_FLAGS */ - list->flags.thread_safe = thread_safe; -#ifdef MUTEX_INIT - list->mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListReset(BrbDLinkedList *list) -{ - /* Sanity check */ - if (!list) - return; - -#ifdef MUTEX_INIT - /* Running thread safe, destroy MUTEX */ - if (list->flags.thread_safe) - MUTEX_DESTROY(list->mutex, "DLINKED_LIST"); - - list->mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; -#endif - - /* Reset LIST */ - list->head = NULL; - list->tail = NULL; - list->size = 0; - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListAddDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) -{ - BrbDLinkedListNode *aux_node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Walk the list to see if this node address is known */ - for (aux_node = list->head; aux_node; aux_node = aux_node->next) - assert(aux_node != node); - - node->data = data; - node->prev = NULL; - node->next = list->head; - - if (list->head) - list->head->prev = node; - - list->head = node; - - if (list->tail == NULL) - list->tail = node; - - list->size++; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListAdd(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - node->data = data; - node->prev = NULL; - node->next = list->head; - - if (list->head) - list->head->prev = node; - - list->head = node; - - if (list->tail == NULL) - list->tail = node; - - list->size++; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListAddTailDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) -{ - BrbDLinkedListNode *aux_node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Walk the list to see if this node address is known */ - for (aux_node = list->head; aux_node; aux_node = aux_node->next) - assert(aux_node != node); - - node->data = data; - node->next = NULL; - node->prev = list->tail; - - if (list->tail) - list->tail->next = node; - - list->tail = node; - - if (list->head == NULL) - list->head = node; - - list->size++; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListAddTail(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - node->data = data; - node->next = NULL; - node->prev = list->tail; - - if (list->tail) - list->tail->next = node; - - list->tail = node; - - if (list->head == NULL) - list->head = node; - - list->size++; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListDeleteDebug(BrbDLinkedList *list, BrbDLinkedListNode *node) -{ - BrbDLinkedListNode *aux_node; - int node_found; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Walk the list to see if this node address is known */ - for (node_found = 0, aux_node = list->head; aux_node; aux_node = aux_node->next) - { - if (aux_node == node) - { - node_found = 1; - break; - } - continue; - } - - assert(node_found); - - /* This node is orphan */ - if ((list->head != node) && (NULL == node->next) && (NULL == node->prev)) - { -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - return; - } - - if (node->next) - node->next->prev = node->prev; - - if (node->prev) - node->prev->next = node->next; - - if (node == list->head) - list->head = node->next; - - if (node == list->tail) - list->tail = node->prev; - - list->size--; - - node->next = node->prev = NULL; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListDelete(BrbDLinkedList *list, BrbDLinkedListNode *node) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* This node is orphan */ - if ((list->head != node) && (NULL == node->next) && (NULL == node->prev)) - { -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; - } - - if (node->next) - node->next->prev = node->prev; - - if (node->prev) - node->prev->next = node->next; - - if (node == list->head) - list->head = node->next; - - if (node == list->tail) - list->tail = node->prev; - - list->size--; - - /* Orphanize NODE */ - node->next = NULL; - node->prev = NULL; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void *BrbDLinkedListPopTail(BrbDLinkedList *list) -{ - BrbDLinkedListNode *node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - if (list->tail == NULL) - { -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return NULL; - } - - node = list->tail; - - /* Head and tail are the same, only item on list */ - if (node == list->head) - { - list->head = NULL; - list->tail = NULL; - } - - /* Unlink from previous node */ - if (node->prev) - node->prev->next = NULL; - - /* Set new tail to previous node */ - list->tail = node->prev; - - /* Unlink local node */ - node->next = NULL; - node->prev = NULL; - - list->size--; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return node->data; -} -/**************************************************************************************************************************/ -void *BrbDLinkedListPopHead(BrbDLinkedList *list) -{ - BrbDLinkedListNode *node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - if (list->head == NULL) - { -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return NULL; - } - - node = list->head; - - if (node->next) - node->next->prev = node->prev; - - if (node->prev) - node->prev->next = node->next; - - if (node == list->head) - list->head = node->next; - - if (node == list->tail) - list->tail = node->prev; - - node->next = node->prev = NULL; - - list->size--; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return node->data; -} -/**************************************************************************************************************************/ -void BrbDLinkedListDestroyData(BrbDLinkedList *list) -{ - BrbDLinkedListNode *node; - BrbDLinkedListNode *prev_node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - node = list->head; - - while (node) - { - /* Walking */ - prev_node = node; - node = node->next; - - BrbDLinkedListDelete(list, prev_node); - - /* Destroy the data and node */ - free(prev_node->data); - free(prev_node); - - continue; - } - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListDup(BrbDLinkedList *list, BrbDLinkedList *ret_list) -{ - BrbDLinkedListNode *node; - BrbDLinkedListNode *new_node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - for (node = list->head; node; node = node->next) - { - new_node = (BrbDLinkedListNode *)calloc(1, sizeof(BrbDLinkedListNode)); - new_node->data = node->data; - BrbDLinkedListAdd(ret_list, new_node, new_node->data); - - continue; - } - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListDupFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value) -{ - BrbDLinkedListNode *node; - BrbDLinkedListNode *new_node; - int filter_node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - for (node = list->head; node; node = node->next) - { - if (!filter_func) - continue; - - filter_node = filter_func(node, filter_key, filter_value); - - /* filter node */ - if (filter_node) - continue; - - /* copy node */ - new_node = (BrbDLinkedListNode *)calloc(1, sizeof(BrbDLinkedListNode)); - new_node->data = node->data; - BrbDLinkedListAdd(ret_list, new_node, new_node->data); - } - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListClean(BrbDLinkedList *list) -{ - BrbDLinkedListNode *node; - BrbDLinkedListNode *prev_node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - for (node = list->head; node; node = node->next) - { - loop_without_move: - - /* Sanity check */ - if (!node) - break; - - /* Save reference pointers */ - prev_node = node; - node = node->next; - - /* Remove from pending request list */ - BrbDLinkedListDelete(list, prev_node); - - /* Destroy the node */ - free(prev_node); - - goto loop_without_move; - } - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Return empty list */ - if (!list->head) - { -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; - } - - /* Duplicate into return list and calculate limit */ - BrbDLinkedListDup(list, ret_list); - - /* Sort Duplicated List */ - if (ret_list->size > 512) - BrbDLinkedListSortMerge(ret_list, cmp_func, cmp_flag); - else - BrbDLinkedListSortSimple(ret_list, cmp_func, cmp_flag); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListSortFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag, - BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Return empty list */ - if (!list->head) - { - /* Initialize empty list */ - BrbDLinkedListInit(ret_list, list->flags.thread_safe); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; - } - - /* Duplicate into return list and calculate limit */ - BrbDLinkedListDupFilter(list, ret_list, filter_func, filter_key, filter_value); - - /* Sort Duplicated List */ - if (ret_list->size > 512) - BrbDLinkedListSortMerge(ret_list, cmp_func, cmp_flag); - else - BrbDLinkedListSortSimple(ret_list, cmp_func, cmp_flag); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListBubbleSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Return empty list */ - if (!list->head) - { - /* Initialize empty list */ - BrbDLinkedListInit(ret_list, list->flags.thread_safe); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; - } - - /* Duplicate LIST */ - BrbDLinkedListDup(list, ret_list); - - /* Sort Duplicated List */ - BrbDLinkedListSortBubble(ret_list, cmp_func, cmp_flag); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListMergeSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Return empty list */ - if (!list->head) - { - /* Initialize empty list */ - BrbDLinkedListInit(ret_list, list->flags.thread_safe); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; - } - - /* duplicate the list to return the list ordered without alter original list */ - BrbDLinkedListDup(list, ret_list); - - /* Sort Duplicated List */ - BrbDLinkedListSortMerge(ret_list, cmp_func, cmp_flag); - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; -} -/**************************************************************************************************************************/ -/* SORT FUNCTIONS */ -/**************************************************************************************************************************/ -void BrbDLinkedListSortSimple(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ - BrbDLinkedListSortMerge(list, cmp_func, cmp_flag); - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListSortBubble(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ - BrbDLinkedListSortMerge(list, cmp_func, cmp_flag); - - return; -} -/**************************************************************************************************************************/ -void BrbDLinkedListSortMerge(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ - BrbDLinkedListNode *node; - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, LOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_LOCK(list->mutex, "DLINKED_LIST"); -#endif - - /* Return empty list */ - if (!list->head) - { -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - - return; - } - - /* check if the return list has more than one item */ - if (list->size > 1) - { - /* call the function to order */ - node = list->head; - list->head = BrbDLinkedListMergeSortFunc(node, cmp_func, cmp_flag); - - node = list->head; - - while (node->next) - node = node->next; - - list->tail = node; - } - -#ifdef MUTEX_INIT - /* Running THREAD_SAFE, UNLOCK MUTEX */ - if (list->flags.thread_safe) - MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); -#endif - return; -} -/**************************************************************************************************************************/ -/**/ -/**/ -/**************************************************************************************************************************/ -static BrbDLinkedListNode *BrbDLinkedListMergeSortFunc(BrbDLinkedListNode *head, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) -{ - /* Private function with no LOCKING */ - - /* Trivial case: length 0 or 1 */ - if (!head || !head->next) - return head; - - BrbDLinkedListNode *right = head; - BrbDLinkedListNode *temp = head; - BrbDLinkedListNode *last = head; - BrbDLinkedListNode *result = 0; - BrbDLinkedListNode *next = 0; - BrbDLinkedListNode *tail = 0; - - /* Find halfway through the list (by running two pointers, one at twice the speed of the other) */ - while (temp && temp->next) - { - last = right; - right = right->next; - temp = temp->next->next; - - continue; - } - - /* Break the list in two - node->prev are broken here, but we fix it later */ - last->next = 0; - - /* Recurse on the two smaller lists */ - head = BrbDLinkedListMergeSortFunc(head, cmp_func, cmp_flag); - right = BrbDLinkedListMergeSortFunc(right, cmp_func, cmp_flag); - - /* Merge lists */ - while (head || right) - { - /* Take from empty right list */ - if (!right) - { - next = head; - head = head->next; - } - /* Take from empty head list */ - else if (!head) - { - next = right; - right = right->next; - } - /* compare elements to ordering */ - else if (cmp_flag ? !cmp_func(head, right) : cmp_func(head, right)) - { - next = head; - head = head->next; - } - else - { - next = right; - right = right->next; - } - - if (!result) - result = next; - else - tail->next = next; - - /* fixed previous pointer */ - next->prev = tail; - tail = next; - - continue; - } - - return result; -} -/**************************************************************************************************************************/ +/* + * BrbDLinkedList.cpp + * + * Created on: 2019-02-11 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * + * Copyright (c) 2019 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbDLinkedList.h" + +static BrbDLinkedListNode *BrbDLinkedListMergeSortFunc(BrbDLinkedListNode *head, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); + +/**************************************************************************************************************************/ +void BrbDLinkedListInit(BrbDLinkedList *list, int thread_safe) +{ + /* Clean up list data */ + memset(list, 0, sizeof(BrbDLinkedList)); + + /* Set MT_FLAGS */ + list->flags.thread_safe = thread_safe; +#ifdef MUTEX_INIT + list->mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListReset(BrbDLinkedList *list) +{ + /* Sanity check */ + if (!list) + return; + +#ifdef MUTEX_INIT + /* Running thread safe, destroy MUTEX */ + if (list->flags.thread_safe) + MUTEX_DESTROY(list->mutex, "DLINKED_LIST"); + + list->mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; +#endif + + /* Reset LIST */ + list->head = NULL; + list->tail = NULL; + list->size = 0; + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListAddDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) +{ + BrbDLinkedListNode *aux_node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Walk the list to see if this node address is known */ + for (aux_node = list->head; aux_node; aux_node = aux_node->next) + assert(aux_node != node); + + node->data = data; + node->prev = NULL; + node->next = list->head; + + if (list->head) + list->head->prev = node; + + list->head = node; + + if (list->tail == NULL) + list->tail = node; + + list->size++; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListAdd(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + node->data = data; + node->prev = NULL; + node->next = list->head; + + if (list->head) + list->head->prev = node; + + list->head = node; + + if (list->tail == NULL) + list->tail = node; + + list->size++; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListAddTailDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) +{ + BrbDLinkedListNode *aux_node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Walk the list to see if this node address is known */ + for (aux_node = list->head; aux_node; aux_node = aux_node->next) + assert(aux_node != node); + + node->data = data; + node->next = NULL; + node->prev = list->tail; + + if (list->tail) + list->tail->next = node; + + list->tail = node; + + if (list->head == NULL) + list->head = node; + + list->size++; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListAddTail(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + node->data = data; + node->next = NULL; + node->prev = list->tail; + + if (list->tail) + list->tail->next = node; + + list->tail = node; + + if (list->head == NULL) + list->head = node; + + list->size++; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListDeleteDebug(BrbDLinkedList *list, BrbDLinkedListNode *node) +{ + BrbDLinkedListNode *aux_node; + int node_found; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Walk the list to see if this node address is known */ + for (node_found = 0, aux_node = list->head; aux_node; aux_node = aux_node->next) + { + if (aux_node == node) + { + node_found = 1; + break; + } + continue; + } + + assert(node_found); + + /* This node is orphan */ + if ((list->head != node) && (NULL == node->next) && (NULL == node->prev)) + { +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + return; + } + + if (node->next) + node->next->prev = node->prev; + + if (node->prev) + node->prev->next = node->next; + + if (node == list->head) + list->head = node->next; + + if (node == list->tail) + list->tail = node->prev; + + list->size--; + + node->next = node->prev = NULL; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListDelete(BrbDLinkedList *list, BrbDLinkedListNode *node) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* This node is orphan */ + if ((list->head != node) && (NULL == node->next) && (NULL == node->prev)) + { +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; + } + + if (node->next) + node->next->prev = node->prev; + + if (node->prev) + node->prev->next = node->next; + + if (node == list->head) + list->head = node->next; + + if (node == list->tail) + list->tail = node->prev; + + list->size--; + + /* Orphanize NODE */ + node->next = NULL; + node->prev = NULL; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void *BrbDLinkedListPopTail(BrbDLinkedList *list) +{ + BrbDLinkedListNode *node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + if (list->tail == NULL) + { +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return NULL; + } + + node = list->tail; + + /* Head and tail are the same, only item on list */ + if (node == list->head) + { + list->head = NULL; + list->tail = NULL; + } + + /* Unlink from previous node */ + if (node->prev) + node->prev->next = NULL; + + /* Set new tail to previous node */ + list->tail = node->prev; + + /* Unlink local node */ + node->next = NULL; + node->prev = NULL; + + list->size--; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return node->data; +} +/**************************************************************************************************************************/ +void *BrbDLinkedListPopHead(BrbDLinkedList *list) +{ + BrbDLinkedListNode *node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + if (list->head == NULL) + { +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return NULL; + } + + node = list->head; + + if (node->next) + node->next->prev = node->prev; + + if (node->prev) + node->prev->next = node->next; + + if (node == list->head) + list->head = node->next; + + if (node == list->tail) + list->tail = node->prev; + + node->next = node->prev = NULL; + + list->size--; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return node->data; +} +/**************************************************************************************************************************/ +void BrbDLinkedListDestroyData(BrbDLinkedList *list) +{ + BrbDLinkedListNode *node; + BrbDLinkedListNode *prev_node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + node = list->head; + + while (node) + { + /* Walking */ + prev_node = node; + node = node->next; + + BrbDLinkedListDelete(list, prev_node); + + /* Destroy the data and node */ + free(prev_node->data); + free(prev_node); + + continue; + } + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListDup(BrbDLinkedList *list, BrbDLinkedList *ret_list) +{ + BrbDLinkedListNode *node; + BrbDLinkedListNode *new_node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + for (node = list->head; node; node = node->next) + { + new_node = (BrbDLinkedListNode *)calloc(1, sizeof(BrbDLinkedListNode)); + new_node->data = node->data; + BrbDLinkedListAdd(ret_list, new_node, new_node->data); + + continue; + } + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListDupFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value) +{ + BrbDLinkedListNode *node; + BrbDLinkedListNode *new_node; + int filter_node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + for (node = list->head; node; node = node->next) + { + if (!filter_func) + continue; + + filter_node = filter_func(node, filter_key, filter_value); + + /* filter node */ + if (filter_node) + continue; + + /* copy node */ + new_node = (BrbDLinkedListNode *)calloc(1, sizeof(BrbDLinkedListNode)); + new_node->data = node->data; + BrbDLinkedListAdd(ret_list, new_node, new_node->data); + } + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListClean(BrbDLinkedList *list) +{ + BrbDLinkedListNode *node; + BrbDLinkedListNode *prev_node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + for (node = list->head; node; node = node->next) + { + loop_without_move: + + /* Sanity check */ + if (!node) + break; + + /* Save reference pointers */ + prev_node = node; + node = node->next; + + /* Remove from pending request list */ + BrbDLinkedListDelete(list, prev_node); + + /* Destroy the node */ + free(prev_node); + + goto loop_without_move; + } + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Return empty list */ + if (!list->head) + { +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; + } + + /* Duplicate into return list and calculate limit */ + BrbDLinkedListDup(list, ret_list); + + /* Sort Duplicated List */ + if (ret_list->size > 512) + BrbDLinkedListSortMerge(ret_list, cmp_func, cmp_flag); + else + BrbDLinkedListSortSimple(ret_list, cmp_func, cmp_flag); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListSortFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag, + BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Return empty list */ + if (!list->head) + { + /* Initialize empty list */ + BrbDLinkedListInit(ret_list, list->flags.thread_safe); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; + } + + /* Duplicate into return list and calculate limit */ + BrbDLinkedListDupFilter(list, ret_list, filter_func, filter_key, filter_value); + + /* Sort Duplicated List */ + if (ret_list->size > 512) + BrbDLinkedListSortMerge(ret_list, cmp_func, cmp_flag); + else + BrbDLinkedListSortSimple(ret_list, cmp_func, cmp_flag); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListBubbleSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Return empty list */ + if (!list->head) + { + /* Initialize empty list */ + BrbDLinkedListInit(ret_list, list->flags.thread_safe); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; + } + + /* Duplicate LIST */ + BrbDLinkedListDup(list, ret_list); + + /* Sort Duplicated List */ + BrbDLinkedListSortBubble(ret_list, cmp_func, cmp_flag); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListMergeSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Return empty list */ + if (!list->head) + { + /* Initialize empty list */ + BrbDLinkedListInit(ret_list, list->flags.thread_safe); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; + } + + /* duplicate the list to return the list ordered without alter original list */ + BrbDLinkedListDup(list, ret_list); + + /* Sort Duplicated List */ + BrbDLinkedListSortMerge(ret_list, cmp_func, cmp_flag); + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; +} +/**************************************************************************************************************************/ +/* SORT FUNCTIONS */ +/**************************************************************************************************************************/ +void BrbDLinkedListSortSimple(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ + BrbDLinkedListSortMerge(list, cmp_func, cmp_flag); + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListSortBubble(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ + BrbDLinkedListSortMerge(list, cmp_func, cmp_flag); + + return; +} +/**************************************************************************************************************************/ +void BrbDLinkedListSortMerge(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ + BrbDLinkedListNode *node; + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, LOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_LOCK(list->mutex, "DLINKED_LIST"); +#endif + + /* Return empty list */ + if (!list->head) + { +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + + return; + } + + /* check if the return list has more than one item */ + if (list->size > 1) + { + /* call the function to order */ + node = list->head; + list->head = BrbDLinkedListMergeSortFunc(node, cmp_func, cmp_flag); + + node = list->head; + + while (node->next) + node = node->next; + + list->tail = node; + } + +#ifdef MUTEX_INIT + /* Running THREAD_SAFE, UNLOCK MUTEX */ + if (list->flags.thread_safe) + MUTEX_UNLOCK(list->mutex, "DLINKED_LIST"); +#endif + return; +} +/**************************************************************************************************************************/ +/**/ +/**/ +/**************************************************************************************************************************/ +static BrbDLinkedListNode *BrbDLinkedListMergeSortFunc(BrbDLinkedListNode *head, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag) +{ + /* Private function with no LOCKING */ + + /* Trivial case: length 0 or 1 */ + if (!head || !head->next) + return head; + + BrbDLinkedListNode *right = head; + BrbDLinkedListNode *temp = head; + BrbDLinkedListNode *last = head; + BrbDLinkedListNode *result = 0; + BrbDLinkedListNode *next = 0; + BrbDLinkedListNode *tail = 0; + + /* Find halfway through the list (by running two pointers, one at twice the speed of the other) */ + while (temp && temp->next) + { + last = right; + right = right->next; + temp = temp->next->next; + + continue; + } + + /* Break the list in two - node->prev are broken here, but we fix it later */ + last->next = 0; + + /* Recurse on the two smaller lists */ + head = BrbDLinkedListMergeSortFunc(head, cmp_func, cmp_flag); + right = BrbDLinkedListMergeSortFunc(right, cmp_func, cmp_flag); + + /* Merge lists */ + while (head || right) + { + /* Take from empty right list */ + if (!right) + { + next = head; + head = head->next; + } + /* Take from empty head list */ + else if (!head) + { + next = right; + right = right->next; + } + /* compare elements to ordering */ + else if (cmp_flag ? !cmp_func(head, right) : cmp_func(head, right)) + { + next = head; + head = head->next; + } + else + { + next = right; + right = right->next; + } + + if (!result) + result = next; + else + tail->next = next; + + /* fixed previous pointer */ + next->prev = tail; + tail = next; + + continue; + } + + return result; +} +/**************************************************************************************************************************/ diff --git a/lib/BrbBase/src/data/BrbDLinkedList.h b/lib/BrbBase/src/data/BrbDLinkedList.h index df136c2..13f8ef9 100644 --- a/lib/BrbBase/src/data/BrbDLinkedList.h +++ b/lib/BrbBase/src/data/BrbDLinkedList.h @@ -1,121 +1,121 @@ -/* - * BrbDLinkedList.h - * - * Created on: 2019-02-11 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_DLINKED_LIST_H_ -#define BRB_DLINKED_LIST_H_ - -#include -#include - -#if defined(ESP32) || defined(ESP8266) -#ifndef MUTEX_INIT -#define MUTEX_INIT(mutex, mutex_name) pthread_mutex_init( (pthread_mutex_t*)(&mutex), 0); -#define MUTEX_LOCK(mutex, mutex_name) pthread_mutex_lock( (pthread_mutex_t*)(&mutex)); -#define MUTEX_TRYLOCK(mutex, mutex_name, state) state = pthread_mutex_trylock( (pthread_mutex_t*)(&mutex)); -#define MUTEX_UNLOCK(mutex, mutex_name) pthread_mutex_unlock( (pthread_mutex_t*)(&mutex)); -#define MUTEX_DESTROY(mutex, mutex_name) pthread_mutex_destroy((pthread_mutex_t*)(&mutex)); -#endif -#endif - - -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ -#define BRB_DLINKED_LIST_PTR_ISEMPTY(list) ((list)->head == NULL) -#define BRB_DLINKED_LIST_ISEMPTY(list) ((list).head == NULL) -#define BRB_DLINKED_LIST_HEAD(list) ((list).head->data) -#define BRB_DLINKED_LIST_ISORPHAN(list) ((list).next == NULL && (list).prev == NULL) -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ -typedef enum -{ - BRB_DLINKEDLIST_SORT_DESCEND, - BRB_DLINKEDLIST_SORT_ASCEND -} BrbDLinkedListSortCodes; -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef struct _BrbDLinkedListNode -{ - void *data; - struct _BrbDLinkedListNode *prev; - struct _BrbDLinkedListNode *next; -} BrbDLinkedListNode; - -typedef struct _BrbDLinkedList -{ - BrbDLinkedListNode *head; - BrbDLinkedListNode *tail; - - unsigned long size; -#if defined(ESP32) || defined(ESP8266) - pthread_mutex_t mutex; -#endif - struct - { - unsigned int thread_safe: 1; - } flags; - -} BrbDLinkedList; -/**********************************************************************************************************************/ -/* PUBLIC FUNCTIONS */ -/**********************************************************/ - -typedef int BrbDLinkedListCompareFunc(BrbDLinkedListNode *, BrbDLinkedListNode *); -typedef int BrbDLinkedListFilterNode(BrbDLinkedListNode *node, char *filter_key, char *filter_node); - -void BrbDLinkedListInit(BrbDLinkedList *list, int thread_safe); -void BrbDLinkedListReset(BrbDLinkedList *list); -void BrbDLinkedListAddDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); -void BrbDLinkedListAdd(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); -void BrbDLinkedListAddTailDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); -void BrbDLinkedListAddTail(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); -void BrbDLinkedListDeleteDebug(BrbDLinkedList *list, BrbDLinkedListNode *node); -void BrbDLinkedListDelete(BrbDLinkedList *list, BrbDLinkedListNode *node); -void *BrbDLinkedListPopTail(BrbDLinkedList *list); -void *BrbDLinkedListPopHead(BrbDLinkedList *list); -void BrbDLinkedListDup(BrbDLinkedList *list, BrbDLinkedList *ret_list); -void BrbDLinkedListDupFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value); -void BrbDLinkedListClean(BrbDLinkedList *list); -void BrbDLinkedListDestroyData(BrbDLinkedList *list); -void BrbDLinkedListSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); -void BrbDLinkedListSortFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag, BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value); -void BrbDLinkedListBubbleSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); -void BrbDLinkedListMergeSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); - -void BrbDLinkedListSortSimple(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); -void BrbDLinkedListSortBubble(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); -void BrbDLinkedListSortMerge(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); -/**********************************************************************************************************************/ +/* + * BrbDLinkedList.h + * + * Created on: 2019-02-11 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_DLINKED_LIST_H_ +#define BRB_DLINKED_LIST_H_ + +#include +#include + +#if defined(ESP32) || defined(ESP8266) +#ifndef MUTEX_INIT +#define MUTEX_INIT(mutex, mutex_name) pthread_mutex_init( (pthread_mutex_t*)(&mutex), 0); +#define MUTEX_LOCK(mutex, mutex_name) pthread_mutex_lock( (pthread_mutex_t*)(&mutex)); +#define MUTEX_TRYLOCK(mutex, mutex_name, state) state = pthread_mutex_trylock( (pthread_mutex_t*)(&mutex)); +#define MUTEX_UNLOCK(mutex, mutex_name) pthread_mutex_unlock( (pthread_mutex_t*)(&mutex)); +#define MUTEX_DESTROY(mutex, mutex_name) pthread_mutex_destroy((pthread_mutex_t*)(&mutex)); +#endif +#endif + + +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ +#define BRB_DLINKED_LIST_PTR_ISEMPTY(list) ((list)->head == NULL) +#define BRB_DLINKED_LIST_ISEMPTY(list) ((list).head == NULL) +#define BRB_DLINKED_LIST_HEAD(list) ((list).head->data) +#define BRB_DLINKED_LIST_ISORPHAN(list) ((list).next == NULL && (list).prev == NULL) +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ +typedef enum +{ + BRB_DLINKEDLIST_SORT_DESCEND, + BRB_DLINKEDLIST_SORT_ASCEND +} BrbDLinkedListSortCodes; +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef struct _BrbDLinkedListNode +{ + void *data; + struct _BrbDLinkedListNode *prev; + struct _BrbDLinkedListNode *next; +} BrbDLinkedListNode; + +typedef struct _BrbDLinkedList +{ + BrbDLinkedListNode *head; + BrbDLinkedListNode *tail; + + unsigned long size; +#if defined(ESP32) || defined(ESP8266) + pthread_mutex_t mutex; +#endif + struct + { + unsigned int thread_safe: 1; + } flags; + +} BrbDLinkedList; +/**********************************************************************************************************************/ +/* PUBLIC FUNCTIONS */ +/**********************************************************/ + +typedef int BrbDLinkedListCompareFunc(BrbDLinkedListNode *, BrbDLinkedListNode *); +typedef int BrbDLinkedListFilterNode(BrbDLinkedListNode *node, char *filter_key, char *filter_node); + +void BrbDLinkedListInit(BrbDLinkedList *list, int thread_safe); +void BrbDLinkedListReset(BrbDLinkedList *list); +void BrbDLinkedListAddDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); +void BrbDLinkedListAdd(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); +void BrbDLinkedListAddTailDebug(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); +void BrbDLinkedListAddTail(BrbDLinkedList *list, BrbDLinkedListNode *node, void *data); +void BrbDLinkedListDeleteDebug(BrbDLinkedList *list, BrbDLinkedListNode *node); +void BrbDLinkedListDelete(BrbDLinkedList *list, BrbDLinkedListNode *node); +void *BrbDLinkedListPopTail(BrbDLinkedList *list); +void *BrbDLinkedListPopHead(BrbDLinkedList *list); +void BrbDLinkedListDup(BrbDLinkedList *list, BrbDLinkedList *ret_list); +void BrbDLinkedListDupFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value); +void BrbDLinkedListClean(BrbDLinkedList *list); +void BrbDLinkedListDestroyData(BrbDLinkedList *list); +void BrbDLinkedListSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); +void BrbDLinkedListSortFilter(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag, BrbDLinkedListFilterNode *filter_func, char *filter_key, char *filter_value); +void BrbDLinkedListBubbleSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); +void BrbDLinkedListMergeSort(BrbDLinkedList *list, BrbDLinkedList *ret_list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); + +void BrbDLinkedListSortSimple(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); +void BrbDLinkedListSortBubble(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); +void BrbDLinkedListSortMerge(BrbDLinkedList *list, BrbDLinkedListCompareFunc *cmp_func, BrbDLinkedListSortCodes cmp_flag); +/**********************************************************************************************************************/ #endif /* BRB_DLINKED_LIST_H_ */ \ No newline at end of file diff --git a/lib/BrbBase/src/data/BrbMicroScript.cpp b/lib/BrbBase/src/data/BrbMicroScript.cpp index fe7ff9d..5e541f5 100644 --- a/lib/BrbBase/src/data/BrbMicroScript.cpp +++ b/lib/BrbBase/src/data/BrbMicroScript.cpp @@ -1,577 +1,577 @@ -/* - * BrbMicroScript.cpp - * - * Created on: 2019-02-11 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbBase.h" - -/**********************************************************************************************************************/ -void BrbMicroScriptBase_Init(BrbMicroScriptBase *script_base) -{ - - return; -} -/**********************************************************************************************************************/ -int BrbMicroScriptBase_RunAll(BrbMicroScriptBase *script_base) -{ - BrbMicroScript *script; - int i; - - /* Update timer counts */ - script_base->ms.last = script_base->ms.cur; - script_base->ms.cur = millis(); - script_base->ms.delay = script_base->ms.cur - script_base->ms.last; - - /* Select a free timer slot from array */ - for (i = 0; i < BRB_MICRO_SCRIPT_MAX; i++) - { - /* Not active, ignore */ - if (!script_base->arr[i].flags.active) - continue; - - /* Grab script and run once */ - script = (BrbMicroScript *)&script_base->arr[i]; - BrbMicroScriptBase_RunOnce(script_base, script); - - /* Finished running script, delete it */ - if (script->flags.finished) - { - memset(script, 0, sizeof(BrbMicroScript)); - } - - continue; - } - - return 1; -} -/**********************************************************************************************************************/ -int BrbMicroScriptBase_RunOnce(BrbMicroScriptBase *script_base, BrbMicroScript *script) -{ - BrbMicroScriptOPRunTime *opcode_run; - BrbMicroScriptOP *opcode; - BrbMicroScriptCBH *cb_func; - BrbMicroScriptOPDelay *op_delay; - uint8_t ret_code; - // uint16_t param; - - // LOG_NOTICE(script_base->log_base, "RUN script [%u] - Persist [%u] Delay [%u:%ld/%ld] - code [%u:%u]\r\n", - // script->script_id, script->flags.persist, script->flags.delaying, script->delay_until_ms, script_base->ms.cur, script->code.offt, script->code.size); - - // script_base->log_base->serial->flush(); - - /* We are delaying, check */ - if ((script->flags.delaying) && (script->delay_until_ms >= script_base->ms.cur)) - return 0; - /* Finished delaying, reset flag */ - else - { - script->flags.delaying = 0; - } - - /* Run the binary opcodes */ - while (script->code.offt < script->code.size) - { - // LOG_NOTICE(script_base->log_base, "RUN script [%u] - code [%u:%u]\r\n", script->script_id, script->code.offt, script->code.size); - - // script_base->log_base->serial->flush(); - - /* Grab current opcode */ - opcode = (BrbMicroScriptOP *)&script->code.arr[script->code.offt]; - - // LOG_NOTICE(script_base->log_base, "RUN script [%u] - code [%u:%u] - op:%u sz :%u\r\n", - // script->script_id, script->code.offt, script->code.size, opcode->opcode, opcode->param_sz); - - // script_base->log_base->serial->flush(); - - /* Sanity check */ - if ((opcode->opcode < SCRIPT_OPCODE_NOT_INIT) || (opcode->opcode >= SCRIPT_OPCODE_LASTITEM)) - { - /* SHOUT ERROR */ - continue; - } - - /* Prepare to run CB_FUNC */ - opcode_run = (BrbMicroScriptOPRunTime *)&glob_script_runtime_arr[opcode->opcode]; - cb_func = opcode_run->cb_func; - - /* Some opcodes need special code path */ - switch (opcode->opcode) - { - /* Leave execution if we find a delay */ - case SCRIPT_OPCODE_DELAY: - - // BrbMicroScriptOP *op_hdr; - op_delay = (BrbMicroScriptOPDelay *)&script->code.arr[script->code.offt + 1]; - - /* Copy param */ - // memcpy(¶m, &script->code.arr[script->code.offt + 1], sizeof(uint16_t)); - - // LOG_NOTICE(script_base->log_base, "RUN DELAY [%u] - tm [%u] sz [%u]\r\n", script->script_id, op_delay->time, opcode->param_sz); - - /* Set when to delay */ - script->delay_until_ms = script_base->ms.cur + op_delay->time; - - /* Set flags we are delaying and point to next PARAM */ - script->flags.delaying = 1; - script->code.offt += 1 + opcode->param_sz; - - return script->code.offt; - - /* Default action */ - default: - - break; - } - - /* Invoke opcode */ - if (cb_func) - { - ret_code = cb_func(script_base, script); - - // LOG_NOTICE(script_base->log_base, "OP CODE [%u] - ret [%u]\r\n", opcode->opcode, ret_code); - - /* Act based on ret code */ - if (ret_code != 0) - continue; - } - - /* Walk to next opcode */ - //next_opcode: - script->code.offt += 1 + opcode->param_sz; - - if (script->code.max_offt > 0 && script->code.offt >= script->code.max_offt) - { - script->code.offt = script->code.jmp_offt; - - script->code.max_offt = 0; - script->code.jmp_offt = 0; - } - - // LOG_NOTICE(script_base->log_base, "LOOP offt [%u] - size [%u]\r\n", script->code.offt, script->code.size); - - continue; - } - - // LOG_NOTICE(script_base->log_base, "DONE persist [%u]\r\n", script->flags.persist); - - /* Finished running, if persist then restart OFFSET, else mark as finished */ - if (script->flags.persist) - script->code.offt = 0; - else - script->flags.finished = 1; - - return script->code.offt; -} -/**********************************************************************************************************************/ -BrbMicroScript *BrbMicroScriptGrabByID(BrbMicroScriptBase *script_base, int script_id) -{ - BrbMicroScript *script; - - LOG_WARN(script_base->log_base, "[%p] - GRAB SCRIPT [%d]\r\n", script_base, script_id); - - /* Sanity check */ - if (script_id > BRB_MICRO_SCRIPT_MAX) - return NULL; - - script = (BrbMicroScript *)&script_base->arr[script_id]; - - return script; -} -/**********************************************************************************************************************/ -BrbMicroScript *BrbMicroScriptGrabFree(BrbMicroScriptBase *script_base) -{ - BrbMicroScript *script; - int i; - - script = NULL; - - /* Select a free timer slot from array */ - for (i = 0; i < BRB_MICRO_SCRIPT_MAX; i++) - { - if (script_base->arr[i].flags.active) - continue; - - /* Fill up script data */ - script = (BrbMicroScript *)&script_base->arr[i]; - script->script_id = i; - break; - } - - /* No more timers */ - if (!script) - { - LOG_WARN(script_base->log_base, "Failed Grab Script\r\n"); - return NULL; - } - - return script; -} -/**********************************************************************************************************************/ -BrbMicroScript *BrbMicroScriptSetByID(BrbMicroScriptBase *script_base, BrbMicroScript *script_new) -{ - BrbMicroScript *script; - - // LOG_NOTICE(script_base->log_base, "[%p] - SET SCRIPT [%d] - [%d]\r\n", script_base, script_new->script_id, MAX_TIMER); - - /* Sanity check */ - if (script_new->script_id > BRB_MICRO_SCRIPT_MAX) - return NULL; - - script = &script_base->arr[script_new->script_id]; - - // LOG_NOTICE(script_base->log_base, "[%p] - Set Script [%d] - [%d] [%d] - sz [%d]\r\n", script_base, - // script->script_id, script->flags.active, script->flags.finished, sizeof(BrbMicroScript)); - - // LOG_WARN(script_base->log_base, "[%p] - Set Script [%d] - [%d] [%d] - sz [%d]\r\n", script_base, - // script_new->script_id, script_new->flags.active, script_new->flags.finished, sizeof(BrbMicroScript)); - - memcpy(script, script_new, sizeof(BrbMicroScript)); - - return script; -} -/**********************************************************************************************************************/ -/* Callback functions */ -/**********************************************************************************************************************/ -BrbMicroScriptOPDelay *BrbMicroScriptOPAddDelay(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint16_t time) -{ - BrbMicroScriptOP *op_hdr; - BrbMicroScriptOPDelay *op_delay; - - if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPDelay)) > sizeof(script->code.arr)) - { - LOG_WARN(script_base->log_base, "No delay avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPDelay)), sizeof(script->code.arr)); - - return NULL; - } - - op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; - op_hdr->opcode = SCRIPT_OPCODE_DELAY; - op_hdr->param_sz = sizeof(BrbMicroScriptOPDelay); - - op_delay = (BrbMicroScriptOPDelay *)&script->code.arr[script->code.size]; - script->code.size += op_hdr->param_sz; - op_delay->time = time; - - return op_delay; -}; -/**********************************************************************************************************************/ -BrbMicroScriptOPCmp *BrbMicroScriptOPAddCmp(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint16_t value) -{ - BrbMicroScriptOP *op_hdr; - BrbMicroScriptOPCmp *op_cmp; - - if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPCmp)) > sizeof(script->code.arr)) - { - LOG_WARN(script_base->log_base, "No CMP sz avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPCmp)), sizeof(script->code.arr)); - - return NULL; - } - - op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; - op_hdr->opcode = SCRIPT_OPCODE_CMP; - op_hdr->param_sz = sizeof(BrbMicroScriptOPCmp); - - op_cmp = (BrbMicroScriptOPCmp *)&script->code.arr[script->code.size]; - script->code.size += op_hdr->param_sz; - - op_cmp->pin = pin; - op_cmp->value = value; - - return op_cmp; -}; -/**********************************************************************************************************************/ -BrbMicroScriptOPIf *BrbMicroScriptOPAddIf(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t if_op, uint8_t else_offset, uint8_t end_offset) -{ - BrbMicroScriptOP *op_hdr; - BrbMicroScriptOPIf *op_if; - - if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPIf)) > sizeof(script->code.arr)) - { - LOG_WARN(script_base->log_base, "No IF sz avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPIf)), sizeof(script->code.arr)); - - return NULL; - } - - if (if_op < SCRIPT_OPCODE_JMP_EQUAL || if_op > SCRIPT_OPCODE_JMP_NOT_LESSER) - { - if_op = SCRIPT_OPCODE_JMP_EQUAL; - } - - op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; - op_hdr->opcode = if_op; - op_hdr->param_sz = sizeof(BrbMicroScriptOPIf); - - op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.size]; - script->code.size += op_hdr->param_sz; - - op_if->else_offset = else_offset; - op_if->end_offset = end_offset; - - return op_if; -}; -/**********************************************************************************************************************/ -BrbMicroScriptOPSetDig *BrbMicroScriptOPAddSetDig(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint8_t mode, uint8_t value) -{ - BrbMicroScriptOP *op_hdr; - BrbMicroScriptOPSetDig *op_set_dig; - - if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPSetDig)) > sizeof(script->code.arr)) - { - LOG_WARN(script_base->log_base, "No SD sz avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPSetDig)), sizeof(script->code.arr)); - - return NULL; - } - - op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; - op_hdr->opcode = SCRIPT_OPCODE_SET_DIGITAL; - op_hdr->param_sz = sizeof(BrbMicroScriptOPSetDig); - - op_set_dig = (BrbMicroScriptOPSetDig *)&script->code.arr[script->code.size]; - script->code.size += op_hdr->param_sz; - - op_set_dig->pin = pin; - op_set_dig->mode = mode; - op_set_dig->value = value; - - return op_set_dig; -}; -/**********************************************************************************************************************/ -int BrbMicroScriptCmpFunc(void *base_ptr, void *cb_data) -{ - BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPCmp *op_cmp = (BrbMicroScriptOPCmp *)&script->code.arr[script->code.offt + 1]; - - // int op_status; - // int pin_begin; - // int pin_max; - int pin_value = analogRead(op_cmp->pin); - int cmp_value = op_cmp->value; - - script->cmp1 = BRB_COMPARE_NUM(pin_value, cmp_value); - - LOG_INFO(script_base->log_base, "CMP [%d] [%d] - [%d] [%d]\r\n", op_cmp->pin, script->cmp1, pin_value, cmp_value); - - return 0; -} -/**********************************************************************************************************************/ -int BrbMicroScriptSetDigitalFunc(void *base_ptr, void *cb_data) -{ - // BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - // BrbMicroScriptOP *op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.offt]; - BrbMicroScriptOPSetDig *op_set_dig = (BrbMicroScriptOPSetDig *)&script->code.arr[script->code.offt + 1]; - - if (op_set_dig->pin < MIN_DIG_PIN || op_set_dig->pin > NUM_DIGITAL_PINS) - return -1; - - /* Check output, set value */ - if (op_set_dig->mode == OUTPUT) - { - pinMode(op_set_dig->pin, OUTPUT); - digitalWrite(op_set_dig->pin, (op_set_dig->value == HIGH) ? HIGH : LOW); - } - else if (op_set_dig->mode == INPUT_PULLUP) - pinMode(op_set_dig->pin, INPUT_PULLUP); - else if (op_set_dig->mode == INPUT) - pinMode(op_set_dig->pin, INPUT); - - return 0; -} -/**********************************************************************************************************************/ -int BrbMicroScriptJmpEqualFunc(void *base_ptr, void *cb_data) -{ - // BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; - - // LOG_INFO(script_base->log_base, "EQ [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); - - /* check param [1 great] [0 equal] [-1 less] */ - if (script->cmp1 == 0) - { - if (op_if->else_offset > 0) - { - script->code.max_offt = op_if->else_offset; - script->code.jmp_offt = op_if->end_offset; - } - - return 0; - } - - if (op_if->else_offset > 0) - script->code.offt = op_if->else_offset; - else - script->code.offt = op_if->end_offset; - - return 1; -} -/**********************************************************************************************************************/ -int BrbMicroScriptJmpNotEqualFunc(void *base_ptr, void *cb_data) -{ - BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; - - LOG_INFO(script_base->log_base, "NEQ [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); - - /* check param [1 great] [0 equal] [-1 less] */ - if (script->cmp1 != 0) - { - if (op_if->else_offset > 0) - { - script->code.max_offt = op_if->else_offset; - script->code.jmp_offt = op_if->end_offset; - } - - return 0; - } - - if (op_if->else_offset > 0) - script->code.offt = op_if->else_offset; - else - script->code.offt = op_if->end_offset; - - return 1; -} -/**********************************************************************************************************************/ -int BrbMicroScriptJmpGreaterFunc(void *base_ptr, void *cb_data) -{ - BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; - - LOG_INFO(script_base->log_base, "GE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); - - /* check param [1 great] [0 equal] [-1 less] */ - if (script->cmp1 > 0) - { - if (op_if->else_offset > 0) - { - script->code.max_offt = op_if->else_offset; - script->code.jmp_offt = op_if->end_offset; - } - - return 0; - } - - if (op_if->else_offset > 0) - script->code.offt = op_if->else_offset; - else - script->code.offt = op_if->end_offset; - - return 1; -} -/**********************************************************************************************************************/ -int BrbMicroScriptJmpNotGreaterFunc(void *base_ptr, void *cb_data) -{ - BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; - - LOG_INFO(script_base->log_base, "NGE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); - - /* check param [1 great] [0 equal] [-1 less] */ - if (script->cmp1 <= 0) - { - if (op_if->else_offset > 0) - { - script->code.max_offt = op_if->else_offset; - script->code.jmp_offt = op_if->end_offset; - } - - return 0; - } - - if (op_if->else_offset > 0) - script->code.offt = op_if->else_offset; - else - script->code.offt = op_if->end_offset; - - return 1; -} -/**********************************************************************************************************************/ -int BrbMicroScriptJmpLesserFunc(void *base_ptr, void *cb_data) -{ - BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; - - LOG_INFO(script_base->log_base, "LE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); - - /* check param [1 great] [0 equal] [-1 less] */ - if (script->cmp1 < 0) - { - if (op_if->else_offset > 0) - { - script->code.max_offt = op_if->else_offset; - script->code.jmp_offt = op_if->end_offset; - } - - return 0; - } - - if (op_if->else_offset > 0) - script->code.offt = op_if->else_offset; - else - script->code.offt = op_if->end_offset; - - return 1; -} -/**********************************************************************************************************************/ -int BrbMicroScriptJmpNotLesserFunc(void *base_ptr, void *cb_data) -{ - BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; - BrbMicroScript *script = (BrbMicroScript *)cb_data; - BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; - - LOG_INFO(script_base->log_base, "NLE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); - - /* check param [1 great] [0 equal] [-1 less] */ - if (script->cmp1 >= 0) - { - if (op_if->else_offset > 0) - { - script->code.max_offt = op_if->else_offset; - script->code.jmp_offt = op_if->end_offset; - } - - return 0; - } - - if (op_if->else_offset > 0) - script->code.offt = op_if->else_offset; - else - script->code.offt = op_if->end_offset; - - return 1; -} +/* + * BrbMicroScript.cpp + * + * Created on: 2019-02-11 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbBase.h" + +/**********************************************************************************************************************/ +void BrbMicroScriptBase_Init(BrbMicroScriptBase *script_base) +{ + + return; +} +/**********************************************************************************************************************/ +int BrbMicroScriptBase_RunAll(BrbMicroScriptBase *script_base) +{ + BrbMicroScript *script; + int i; + + /* Update timer counts */ + script_base->ms.last = script_base->ms.cur; + script_base->ms.cur = millis(); + script_base->ms.delay = script_base->ms.cur - script_base->ms.last; + + /* Select a free timer slot from array */ + for (i = 0; i < BRB_MICRO_SCRIPT_MAX; i++) + { + /* Not active, ignore */ + if (!script_base->arr[i].flags.active) + continue; + + /* Grab script and run once */ + script = (BrbMicroScript *)&script_base->arr[i]; + BrbMicroScriptBase_RunOnce(script_base, script); + + /* Finished running script, delete it */ + if (script->flags.finished) + { + memset(script, 0, sizeof(BrbMicroScript)); + } + + continue; + } + + return 1; +} +/**********************************************************************************************************************/ +int BrbMicroScriptBase_RunOnce(BrbMicroScriptBase *script_base, BrbMicroScript *script) +{ + BrbMicroScriptOPRunTime *opcode_run; + BrbMicroScriptOP *opcode; + BrbMicroScriptCBH *cb_func; + BrbMicroScriptOPDelay *op_delay; + uint8_t ret_code; + // uint16_t param; + + // LOG_NOTICE(script_base->log_base, "RUN script [%u] - Persist [%u] Delay [%u:%ld/%ld] - code [%u:%u]\r\n", + // script->script_id, script->flags.persist, script->flags.delaying, script->delay_until_ms, script_base->ms.cur, script->code.offt, script->code.size); + + // script_base->log_base->serial->flush(); + + /* We are delaying, check */ + if ((script->flags.delaying) && (script->delay_until_ms >= script_base->ms.cur)) + return 0; + /* Finished delaying, reset flag */ + else + { + script->flags.delaying = 0; + } + + /* Run the binary opcodes */ + while (script->code.offt < script->code.size) + { + // LOG_NOTICE(script_base->log_base, "RUN script [%u] - code [%u:%u]\r\n", script->script_id, script->code.offt, script->code.size); + + // script_base->log_base->serial->flush(); + + /* Grab current opcode */ + opcode = (BrbMicroScriptOP *)&script->code.arr[script->code.offt]; + + // LOG_NOTICE(script_base->log_base, "RUN script [%u] - code [%u:%u] - op:%u sz :%u\r\n", + // script->script_id, script->code.offt, script->code.size, opcode->opcode, opcode->param_sz); + + // script_base->log_base->serial->flush(); + + /* Sanity check */ + if ((opcode->opcode < SCRIPT_OPCODE_NOT_INIT) || (opcode->opcode >= SCRIPT_OPCODE_LASTITEM)) + { + /* SHOUT ERROR */ + continue; + } + + /* Prepare to run CB_FUNC */ + opcode_run = (BrbMicroScriptOPRunTime *)&glob_script_runtime_arr[opcode->opcode]; + cb_func = opcode_run->cb_func; + + /* Some opcodes need special code path */ + switch (opcode->opcode) + { + /* Leave execution if we find a delay */ + case SCRIPT_OPCODE_DELAY: + + // BrbMicroScriptOP *op_hdr; + op_delay = (BrbMicroScriptOPDelay *)&script->code.arr[script->code.offt + 1]; + + /* Copy param */ + // memcpy(¶m, &script->code.arr[script->code.offt + 1], sizeof(uint16_t)); + + // LOG_NOTICE(script_base->log_base, "RUN DELAY [%u] - tm [%u] sz [%u]\r\n", script->script_id, op_delay->time, opcode->param_sz); + + /* Set when to delay */ + script->delay_until_ms = script_base->ms.cur + op_delay->time; + + /* Set flags we are delaying and point to next PARAM */ + script->flags.delaying = 1; + script->code.offt += 1 + opcode->param_sz; + + return script->code.offt; + + /* Default action */ + default: + + break; + } + + /* Invoke opcode */ + if (cb_func) + { + ret_code = cb_func(script_base, script); + + // LOG_NOTICE(script_base->log_base, "OP CODE [%u] - ret [%u]\r\n", opcode->opcode, ret_code); + + /* Act based on ret code */ + if (ret_code != 0) + continue; + } + + /* Walk to next opcode */ + //next_opcode: + script->code.offt += 1 + opcode->param_sz; + + if (script->code.max_offt > 0 && script->code.offt >= script->code.max_offt) + { + script->code.offt = script->code.jmp_offt; + + script->code.max_offt = 0; + script->code.jmp_offt = 0; + } + + // LOG_NOTICE(script_base->log_base, "LOOP offt [%u] - size [%u]\r\n", script->code.offt, script->code.size); + + continue; + } + + // LOG_NOTICE(script_base->log_base, "DONE persist [%u]\r\n", script->flags.persist); + + /* Finished running, if persist then restart OFFSET, else mark as finished */ + if (script->flags.persist) + script->code.offt = 0; + else + script->flags.finished = 1; + + return script->code.offt; +} +/**********************************************************************************************************************/ +BrbMicroScript *BrbMicroScriptGrabByID(BrbMicroScriptBase *script_base, int script_id) +{ + BrbMicroScript *script; + + LOG_WARN(script_base->log_base, "[%p] - GRAB SCRIPT [%d]\r\n", script_base, script_id); + + /* Sanity check */ + if (script_id > BRB_MICRO_SCRIPT_MAX) + return NULL; + + script = (BrbMicroScript *)&script_base->arr[script_id]; + + return script; +} +/**********************************************************************************************************************/ +BrbMicroScript *BrbMicroScriptGrabFree(BrbMicroScriptBase *script_base) +{ + BrbMicroScript *script; + int i; + + script = NULL; + + /* Select a free timer slot from array */ + for (i = 0; i < BRB_MICRO_SCRIPT_MAX; i++) + { + if (script_base->arr[i].flags.active) + continue; + + /* Fill up script data */ + script = (BrbMicroScript *)&script_base->arr[i]; + script->script_id = i; + break; + } + + /* No more timers */ + if (!script) + { + LOG_WARN(script_base->log_base, "Failed Grab Script\r\n"); + return NULL; + } + + return script; +} +/**********************************************************************************************************************/ +BrbMicroScript *BrbMicroScriptSetByID(BrbMicroScriptBase *script_base, BrbMicroScript *script_new) +{ + BrbMicroScript *script; + + // LOG_NOTICE(script_base->log_base, "[%p] - SET SCRIPT [%d] - [%d]\r\n", script_base, script_new->script_id, MAX_TIMER); + + /* Sanity check */ + if (script_new->script_id > BRB_MICRO_SCRIPT_MAX) + return NULL; + + script = &script_base->arr[script_new->script_id]; + + // LOG_NOTICE(script_base->log_base, "[%p] - Set Script [%d] - [%d] [%d] - sz [%d]\r\n", script_base, + // script->script_id, script->flags.active, script->flags.finished, sizeof(BrbMicroScript)); + + // LOG_WARN(script_base->log_base, "[%p] - Set Script [%d] - [%d] [%d] - sz [%d]\r\n", script_base, + // script_new->script_id, script_new->flags.active, script_new->flags.finished, sizeof(BrbMicroScript)); + + memcpy(script, script_new, sizeof(BrbMicroScript)); + + return script; +} +/**********************************************************************************************************************/ +/* Callback functions */ +/**********************************************************************************************************************/ +BrbMicroScriptOPDelay *BrbMicroScriptOPAddDelay(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint16_t time) +{ + BrbMicroScriptOP *op_hdr; + BrbMicroScriptOPDelay *op_delay; + + if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPDelay)) > sizeof(script->code.arr)) + { + LOG_WARN(script_base->log_base, "No delay avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPDelay)), sizeof(script->code.arr)); + + return NULL; + } + + op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; + op_hdr->opcode = SCRIPT_OPCODE_DELAY; + op_hdr->param_sz = sizeof(BrbMicroScriptOPDelay); + + op_delay = (BrbMicroScriptOPDelay *)&script->code.arr[script->code.size]; + script->code.size += op_hdr->param_sz; + op_delay->time = time; + + return op_delay; +}; +/**********************************************************************************************************************/ +BrbMicroScriptOPCmp *BrbMicroScriptOPAddCmp(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint16_t value) +{ + BrbMicroScriptOP *op_hdr; + BrbMicroScriptOPCmp *op_cmp; + + if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPCmp)) > sizeof(script->code.arr)) + { + LOG_WARN(script_base->log_base, "No CMP sz avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPCmp)), sizeof(script->code.arr)); + + return NULL; + } + + op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; + op_hdr->opcode = SCRIPT_OPCODE_CMP; + op_hdr->param_sz = sizeof(BrbMicroScriptOPCmp); + + op_cmp = (BrbMicroScriptOPCmp *)&script->code.arr[script->code.size]; + script->code.size += op_hdr->param_sz; + + op_cmp->pin = pin; + op_cmp->value = value; + + return op_cmp; +}; +/**********************************************************************************************************************/ +BrbMicroScriptOPIf *BrbMicroScriptOPAddIf(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t if_op, uint8_t else_offset, uint8_t end_offset) +{ + BrbMicroScriptOP *op_hdr; + BrbMicroScriptOPIf *op_if; + + if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPIf)) > sizeof(script->code.arr)) + { + LOG_WARN(script_base->log_base, "No IF sz avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPIf)), sizeof(script->code.arr)); + + return NULL; + } + + if (if_op < SCRIPT_OPCODE_JMP_EQUAL || if_op > SCRIPT_OPCODE_JMP_NOT_LESSER) + { + if_op = SCRIPT_OPCODE_JMP_EQUAL; + } + + op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; + op_hdr->opcode = if_op; + op_hdr->param_sz = sizeof(BrbMicroScriptOPIf); + + op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.size]; + script->code.size += op_hdr->param_sz; + + op_if->else_offset = else_offset; + op_if->end_offset = end_offset; + + return op_if; +}; +/**********************************************************************************************************************/ +BrbMicroScriptOPSetDig *BrbMicroScriptOPAddSetDig(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint8_t mode, uint8_t value) +{ + BrbMicroScriptOP *op_hdr; + BrbMicroScriptOPSetDig *op_set_dig; + + if (!script || (script->code.size + 1 + sizeof(BrbMicroScriptOPSetDig)) > sizeof(script->code.arr)) + { + LOG_WARN(script_base->log_base, "No SD sz avail [%d] [%d]\r\n", (script->code.size + 1 + sizeof(BrbMicroScriptOPSetDig)), sizeof(script->code.arr)); + + return NULL; + } + + op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.size++]; + op_hdr->opcode = SCRIPT_OPCODE_SET_DIGITAL; + op_hdr->param_sz = sizeof(BrbMicroScriptOPSetDig); + + op_set_dig = (BrbMicroScriptOPSetDig *)&script->code.arr[script->code.size]; + script->code.size += op_hdr->param_sz; + + op_set_dig->pin = pin; + op_set_dig->mode = mode; + op_set_dig->value = value; + + return op_set_dig; +}; +/**********************************************************************************************************************/ +int BrbMicroScriptCmpFunc(void *base_ptr, void *cb_data) +{ + BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPCmp *op_cmp = (BrbMicroScriptOPCmp *)&script->code.arr[script->code.offt + 1]; + + // int op_status; + // int pin_begin; + // int pin_max; + int pin_value = analogRead(op_cmp->pin); + int cmp_value = op_cmp->value; + + script->cmp1 = BRB_COMPARE_NUM(pin_value, cmp_value); + + LOG_INFO(script_base->log_base, "CMP [%d] [%d] - [%d] [%d]\r\n", op_cmp->pin, script->cmp1, pin_value, cmp_value); + + return 0; +} +/**********************************************************************************************************************/ +int BrbMicroScriptSetDigitalFunc(void *base_ptr, void *cb_data) +{ + // BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + // BrbMicroScriptOP *op_hdr = (BrbMicroScriptOP *)&script->code.arr[script->code.offt]; + BrbMicroScriptOPSetDig *op_set_dig = (BrbMicroScriptOPSetDig *)&script->code.arr[script->code.offt + 1]; + + if (op_set_dig->pin < MIN_DIG_PIN || op_set_dig->pin > NUM_DIGITAL_PINS) + return -1; + + /* Check output, set value */ + if (op_set_dig->mode == OUTPUT) + { + pinMode(op_set_dig->pin, OUTPUT); + digitalWrite(op_set_dig->pin, (op_set_dig->value == HIGH) ? HIGH : LOW); + } + else if (op_set_dig->mode == INPUT_PULLUP) + pinMode(op_set_dig->pin, INPUT_PULLUP); + else if (op_set_dig->mode == INPUT) + pinMode(op_set_dig->pin, INPUT); + + return 0; +} +/**********************************************************************************************************************/ +int BrbMicroScriptJmpEqualFunc(void *base_ptr, void *cb_data) +{ + // BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; + + // LOG_INFO(script_base->log_base, "EQ [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); + + /* check param [1 great] [0 equal] [-1 less] */ + if (script->cmp1 == 0) + { + if (op_if->else_offset > 0) + { + script->code.max_offt = op_if->else_offset; + script->code.jmp_offt = op_if->end_offset; + } + + return 0; + } + + if (op_if->else_offset > 0) + script->code.offt = op_if->else_offset; + else + script->code.offt = op_if->end_offset; + + return 1; +} +/**********************************************************************************************************************/ +int BrbMicroScriptJmpNotEqualFunc(void *base_ptr, void *cb_data) +{ + BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; + + LOG_INFO(script_base->log_base, "NEQ [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); + + /* check param [1 great] [0 equal] [-1 less] */ + if (script->cmp1 != 0) + { + if (op_if->else_offset > 0) + { + script->code.max_offt = op_if->else_offset; + script->code.jmp_offt = op_if->end_offset; + } + + return 0; + } + + if (op_if->else_offset > 0) + script->code.offt = op_if->else_offset; + else + script->code.offt = op_if->end_offset; + + return 1; +} +/**********************************************************************************************************************/ +int BrbMicroScriptJmpGreaterFunc(void *base_ptr, void *cb_data) +{ + BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; + + LOG_INFO(script_base->log_base, "GE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); + + /* check param [1 great] [0 equal] [-1 less] */ + if (script->cmp1 > 0) + { + if (op_if->else_offset > 0) + { + script->code.max_offt = op_if->else_offset; + script->code.jmp_offt = op_if->end_offset; + } + + return 0; + } + + if (op_if->else_offset > 0) + script->code.offt = op_if->else_offset; + else + script->code.offt = op_if->end_offset; + + return 1; +} +/**********************************************************************************************************************/ +int BrbMicroScriptJmpNotGreaterFunc(void *base_ptr, void *cb_data) +{ + BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; + + LOG_INFO(script_base->log_base, "NGE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); + + /* check param [1 great] [0 equal] [-1 less] */ + if (script->cmp1 <= 0) + { + if (op_if->else_offset > 0) + { + script->code.max_offt = op_if->else_offset; + script->code.jmp_offt = op_if->end_offset; + } + + return 0; + } + + if (op_if->else_offset > 0) + script->code.offt = op_if->else_offset; + else + script->code.offt = op_if->end_offset; + + return 1; +} +/**********************************************************************************************************************/ +int BrbMicroScriptJmpLesserFunc(void *base_ptr, void *cb_data) +{ + BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; + + LOG_INFO(script_base->log_base, "LE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); + + /* check param [1 great] [0 equal] [-1 less] */ + if (script->cmp1 < 0) + { + if (op_if->else_offset > 0) + { + script->code.max_offt = op_if->else_offset; + script->code.jmp_offt = op_if->end_offset; + } + + return 0; + } + + if (op_if->else_offset > 0) + script->code.offt = op_if->else_offset; + else + script->code.offt = op_if->end_offset; + + return 1; +} +/**********************************************************************************************************************/ +int BrbMicroScriptJmpNotLesserFunc(void *base_ptr, void *cb_data) +{ + BrbMicroScriptBase *script_base = (BrbMicroScriptBase *)base_ptr; + BrbMicroScript *script = (BrbMicroScript *)cb_data; + BrbMicroScriptOPIf *op_if = (BrbMicroScriptOPIf *)&script->code.arr[script->code.offt + 1]; + + LOG_INFO(script_base->log_base, "NLE [%d] - el [%u] en [%u]\r\n", script->cmp1, op_if->else_offset, op_if->end_offset); + + /* check param [1 great] [0 equal] [-1 less] */ + if (script->cmp1 >= 0) + { + if (op_if->else_offset > 0) + { + script->code.max_offt = op_if->else_offset; + script->code.jmp_offt = op_if->end_offset; + } + + return 0; + } + + if (op_if->else_offset > 0) + script->code.offt = op_if->else_offset; + else + script->code.offt = op_if->end_offset; + + return 1; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbBase/src/data/BrbMicroScript.h b/lib/BrbBase/src/data/BrbMicroScript.h index cd94f3e..a4d1dd7 100644 --- a/lib/BrbBase/src/data/BrbMicroScript.h +++ b/lib/BrbBase/src/data/BrbMicroScript.h @@ -1,224 +1,224 @@ -/* - * BrbMicroScript.h - * - * Created on: 2019-02-11 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_MICRO_SCRIPT_H_ -#define BRB_MICRO_SCRIPT_H_ - -#include - -#ifndef BRB_MICRO_SCRIPT_MAX -#define BRB_MICRO_SCRIPT_MAX 12 -#endif - -#ifndef BRB_MICRO_SCRIPT_OP_SZ -#define BRB_MICRO_SCRIPT_OP_SZ 64 -#endif - -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ - -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ -typedef enum -{ - SCRIPT_OPCODE_NOT_INIT, - SCRIPT_OPCODE_DELAY, - SCRIPT_OPCODE_CMP, - SCRIPT_OPCODE_JMP_EQUAL, - SCRIPT_OPCODE_JMP_NOT_EQUAL, - SCRIPT_OPCODE_JMP_GREATER, - SCRIPT_OPCODE_JMP_NOT_GREATER, - SCRIPT_OPCODE_JMP_LESSER, - SCRIPT_OPCODE_JMP_NOT_LESSER, - SCRIPT_OPCODE_SET_DIGITAL, - - SCRIPT_OPCODE_LASTITEM -} BrbMicroScriptOPCodeNum; -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef int BrbMicroScriptCBH(void *, void *); -/**********************************************************/ -typedef struct _BrbMicroScriptOP -{ - uint8_t opcode : 4; - uint8_t param_sz : 4; -} BrbMicroScriptOP; - -typedef struct _BrbMicroScriptOPDelay -{ - uint16_t time; -} BrbMicroScriptOPDelay; - -typedef struct _BrbMicroScriptOPSetDig -{ - uint8_t pin; - - uint8_t mode : 2; /* 0 INPUT, 1 OUTPUT, 2 INPUT_PULLUP 3 IGNORE */ - uint8_t value : 1; - uint8_t pad0 : 5; - -} BrbMicroScriptOPSetDig; - -// typedef struct _BrbMicroScriptOPStepperAtDt -// { -// uint8_t pin; -// uint8_t index:3; -// uint8_t action:1; -// uint8_t pad0:4; - -// } BrbMicroScriptOPStepperAtDt; - - -typedef struct _BrbMicroScriptOPCmp -{ - uint8_t pin; - uint8_t reserved; - uint16_t value; - -} BrbMicroScriptOPCmp; - -typedef struct _BrbMicroScriptOPIf -{ - uint8_t else_offset; - uint8_t end_offset; - -} BrbMicroScriptOPIf; - -typedef struct _BrbMicroScriptOPRunTime -{ - uint8_t opcode : 4; - uint8_t param_sz : 4; - BrbMicroScriptCBH *cb_func; -} BrbMicroScriptOPRunTime; - -typedef struct _BrbMicroCode -{ - uint8_t size; - uint8_t offt; - - uint8_t max_offt; - uint8_t jmp_offt; - - /* grow only 4 in 4 */ - BrbMicroScriptOP arr[BRB_MICRO_SCRIPT_OP_SZ]; - -} BrbMicroCode; - -typedef struct _BrbMicroScript -{ - uint8_t script_id; - - long delay_until_ms; - int cmp1; - int cmp2; - - BrbMicroCode code; - - struct - { - uint16_t persist : 1; - uint16_t active : 1; - uint16_t delaying : 1; - uint16_t finished : 1; - uint16_t pad : 12; - } flags; - -} BrbMicroScript; - -typedef struct _BrbMicroScriptBase -{ - BrbLogBase *log_base; - struct _BrbBase *brb_base; - - BrbMicroScript arr[BRB_MICRO_SCRIPT_MAX]; - int count; - - struct - { - long last; - long cur; - int delay; - } ms; - -} BrbMicroScriptBase; -/**********************************************************************************************************************/ -/* PUBLIC FUNCTIONS */ -/**********************************************************/ -void BrbMicroScriptBase_Init(BrbMicroScriptBase *script_base); -int BrbMicroScriptBase_RunAll(BrbMicroScriptBase *script_base); -int BrbMicroScriptBase_RunOnce(BrbMicroScriptBase *script_base, BrbMicroScript *script); - -BrbMicroScriptOPDelay *BrbMicroScriptOPAddDelay(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint16_t time); -BrbMicroScriptOPCmp *BrbMicroScriptOPAddCmp(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint16_t value); -BrbMicroScriptOPIf *BrbMicroScriptOPAddIf(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t if_op, uint8_t else_offset, uint8_t end_offset); -BrbMicroScriptOPSetDig *BrbMicroScriptOPAddSetDig(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint8_t mode, uint8_t value); - -BrbMicroScript *BrbMicroScriptGrabByID(BrbMicroScriptBase *script_base, int script_id); -BrbMicroScript *BrbMicroScriptGrabFree(BrbMicroScriptBase *script_base); -BrbMicroScript *BrbMicroScriptSetByID(BrbMicroScriptBase *script_base, BrbMicroScript *script_new); -/**********************************************************************************************************************/ -/* SCRIPT FUNCTIONS */ -/**********************************************************/ - -BrbMicroScriptCBH BrbMicroScriptCmpFunc; -BrbMicroScriptCBH BrbMicroScriptJmpEqualFunc; -BrbMicroScriptCBH BrbMicroScriptJmpNotEqualFunc; -BrbMicroScriptCBH BrbMicroScriptJmpGreaterFunc; -BrbMicroScriptCBH BrbMicroScriptJmpNotGreaterFunc; -BrbMicroScriptCBH BrbMicroScriptJmpLesserFunc; -BrbMicroScriptCBH BrbMicroScriptJmpNotLesserFunc; -BrbMicroScriptCBH BrbMicroScriptSetDigitalFunc; - -static const BrbMicroScriptOPRunTime glob_script_runtime_arr[] = - { - {SCRIPT_OPCODE_NOT_INIT, 0, NULL}, - {SCRIPT_OPCODE_DELAY, 4, NULL}, - - {SCRIPT_OPCODE_CMP, 1, BrbMicroScriptCmpFunc}, - - {SCRIPT_OPCODE_JMP_EQUAL, 1, BrbMicroScriptJmpEqualFunc}, - {SCRIPT_OPCODE_JMP_NOT_EQUAL, 1, BrbMicroScriptJmpNotEqualFunc}, - {SCRIPT_OPCODE_JMP_GREATER, 1, BrbMicroScriptJmpGreaterFunc}, - {SCRIPT_OPCODE_JMP_NOT_GREATER, 1, BrbMicroScriptJmpNotGreaterFunc}, - {SCRIPT_OPCODE_JMP_LESSER, 1, BrbMicroScriptJmpLesserFunc}, - {SCRIPT_OPCODE_JMP_NOT_LESSER, 1, BrbMicroScriptJmpNotLesserFunc}, - - {SCRIPT_OPCODE_SET_DIGITAL, 1, BrbMicroScriptSetDigitalFunc}, - - {SCRIPT_OPCODE_LASTITEM, 0, NULL} /* NULL TERMINATOR */ -}; -/**********************************************************************************************************************/ +/* + * BrbMicroScript.h + * + * Created on: 2019-02-11 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_MICRO_SCRIPT_H_ +#define BRB_MICRO_SCRIPT_H_ + +#include + +#ifndef BRB_MICRO_SCRIPT_MAX +#define BRB_MICRO_SCRIPT_MAX 12 +#endif + +#ifndef BRB_MICRO_SCRIPT_OP_SZ +#define BRB_MICRO_SCRIPT_OP_SZ 64 +#endif + +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ + +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ +typedef enum +{ + SCRIPT_OPCODE_NOT_INIT, + SCRIPT_OPCODE_DELAY, + SCRIPT_OPCODE_CMP, + SCRIPT_OPCODE_JMP_EQUAL, + SCRIPT_OPCODE_JMP_NOT_EQUAL, + SCRIPT_OPCODE_JMP_GREATER, + SCRIPT_OPCODE_JMP_NOT_GREATER, + SCRIPT_OPCODE_JMP_LESSER, + SCRIPT_OPCODE_JMP_NOT_LESSER, + SCRIPT_OPCODE_SET_DIGITAL, + + SCRIPT_OPCODE_LASTITEM +} BrbMicroScriptOPCodeNum; +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef int BrbMicroScriptCBH(void *, void *); +/**********************************************************/ +typedef struct _BrbMicroScriptOP +{ + uint8_t opcode : 4; + uint8_t param_sz : 4; +} BrbMicroScriptOP; + +typedef struct _BrbMicroScriptOPDelay +{ + uint16_t time; +} BrbMicroScriptOPDelay; + +typedef struct _BrbMicroScriptOPSetDig +{ + uint8_t pin; + + uint8_t mode : 2; /* 0 INPUT, 1 OUTPUT, 2 INPUT_PULLUP 3 IGNORE */ + uint8_t value : 1; + uint8_t pad0 : 5; + +} BrbMicroScriptOPSetDig; + +// typedef struct _BrbMicroScriptOPStepperAtDt +// { +// uint8_t pin; +// uint8_t index:3; +// uint8_t action:1; +// uint8_t pad0:4; + +// } BrbMicroScriptOPStepperAtDt; + + +typedef struct _BrbMicroScriptOPCmp +{ + uint8_t pin; + uint8_t reserved; + uint16_t value; + +} BrbMicroScriptOPCmp; + +typedef struct _BrbMicroScriptOPIf +{ + uint8_t else_offset; + uint8_t end_offset; + +} BrbMicroScriptOPIf; + +typedef struct _BrbMicroScriptOPRunTime +{ + uint8_t opcode : 4; + uint8_t param_sz : 4; + BrbMicroScriptCBH *cb_func; +} BrbMicroScriptOPRunTime; + +typedef struct _BrbMicroCode +{ + uint8_t size; + uint8_t offt; + + uint8_t max_offt; + uint8_t jmp_offt; + + /* grow only 4 in 4 */ + BrbMicroScriptOP arr[BRB_MICRO_SCRIPT_OP_SZ]; + +} BrbMicroCode; + +typedef struct _BrbMicroScript +{ + uint8_t script_id; + + long delay_until_ms; + int cmp1; + int cmp2; + + BrbMicroCode code; + + struct + { + uint16_t persist : 1; + uint16_t active : 1; + uint16_t delaying : 1; + uint16_t finished : 1; + uint16_t pad : 12; + } flags; + +} BrbMicroScript; + +typedef struct _BrbMicroScriptBase +{ + BrbLogBase *log_base; + struct _BrbBase *brb_base; + + BrbMicroScript arr[BRB_MICRO_SCRIPT_MAX]; + int count; + + struct + { + long last; + long cur; + int delay; + } ms; + +} BrbMicroScriptBase; +/**********************************************************************************************************************/ +/* PUBLIC FUNCTIONS */ +/**********************************************************/ +void BrbMicroScriptBase_Init(BrbMicroScriptBase *script_base); +int BrbMicroScriptBase_RunAll(BrbMicroScriptBase *script_base); +int BrbMicroScriptBase_RunOnce(BrbMicroScriptBase *script_base, BrbMicroScript *script); + +BrbMicroScriptOPDelay *BrbMicroScriptOPAddDelay(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint16_t time); +BrbMicroScriptOPCmp *BrbMicroScriptOPAddCmp(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint16_t value); +BrbMicroScriptOPIf *BrbMicroScriptOPAddIf(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t if_op, uint8_t else_offset, uint8_t end_offset); +BrbMicroScriptOPSetDig *BrbMicroScriptOPAddSetDig(BrbMicroScriptBase *script_base, BrbMicroScript *script, uint8_t pin, uint8_t mode, uint8_t value); + +BrbMicroScript *BrbMicroScriptGrabByID(BrbMicroScriptBase *script_base, int script_id); +BrbMicroScript *BrbMicroScriptGrabFree(BrbMicroScriptBase *script_base); +BrbMicroScript *BrbMicroScriptSetByID(BrbMicroScriptBase *script_base, BrbMicroScript *script_new); +/**********************************************************************************************************************/ +/* SCRIPT FUNCTIONS */ +/**********************************************************/ + +BrbMicroScriptCBH BrbMicroScriptCmpFunc; +BrbMicroScriptCBH BrbMicroScriptJmpEqualFunc; +BrbMicroScriptCBH BrbMicroScriptJmpNotEqualFunc; +BrbMicroScriptCBH BrbMicroScriptJmpGreaterFunc; +BrbMicroScriptCBH BrbMicroScriptJmpNotGreaterFunc; +BrbMicroScriptCBH BrbMicroScriptJmpLesserFunc; +BrbMicroScriptCBH BrbMicroScriptJmpNotLesserFunc; +BrbMicroScriptCBH BrbMicroScriptSetDigitalFunc; + +static const BrbMicroScriptOPRunTime glob_script_runtime_arr[] = + { + {SCRIPT_OPCODE_NOT_INIT, 0, NULL}, + {SCRIPT_OPCODE_DELAY, 4, NULL}, + + {SCRIPT_OPCODE_CMP, 1, BrbMicroScriptCmpFunc}, + + {SCRIPT_OPCODE_JMP_EQUAL, 1, BrbMicroScriptJmpEqualFunc}, + {SCRIPT_OPCODE_JMP_NOT_EQUAL, 1, BrbMicroScriptJmpNotEqualFunc}, + {SCRIPT_OPCODE_JMP_GREATER, 1, BrbMicroScriptJmpGreaterFunc}, + {SCRIPT_OPCODE_JMP_NOT_GREATER, 1, BrbMicroScriptJmpNotGreaterFunc}, + {SCRIPT_OPCODE_JMP_LESSER, 1, BrbMicroScriptJmpLesserFunc}, + {SCRIPT_OPCODE_JMP_NOT_LESSER, 1, BrbMicroScriptJmpNotLesserFunc}, + + {SCRIPT_OPCODE_SET_DIGITAL, 1, BrbMicroScriptSetDigitalFunc}, + + {SCRIPT_OPCODE_LASTITEM, 0, NULL} /* NULL TERMINATOR */ +}; +/**********************************************************************************************************************/ #endif /* BRB_MICRO_SCRIPT_H_ */ \ No newline at end of file diff --git a/lib/BrbBase/src/log/BrbLogBase.cpp b/lib/BrbBase/src/log/BrbLogBase.cpp index 5ca5897..fc73fa2 100644 --- a/lib/BrbBase/src/log/BrbLogBase.cpp +++ b/lib/BrbBase/src/log/BrbLogBase.cpp @@ -1,114 +1,114 @@ -/* - * BrbLogBase.cpp - * - * Created on: 2018-10-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbBase.h" - -/**********************************************************************************************************************/ -BrbLogBase *BrbLogBase_New(void) -{ - BrbLogBase *log_base; - - log_base = (BrbLogBase *)calloc(1, sizeof(BrbLogBase)); - - return log_base; -} - /**********************************************************************************************************************/ -int BrbLogBase_Init(BrbLogBase *log_base, HardwareSerial *serial) -{ - /* Sanitize */ - if (!log_base) - return -1; - - log_base->serial = serial; - - /* Initialize Serial Console */ - log_base->serial->begin(LOG_BAUDRATE); - - return 0; -} - /**********************************************************************************************************************/ -int BrbLogBase_PrintFmt(BrbLogBase *log_base, const char *format, ...) -{ - /* Sanitize */ - if (!log_base || !log_base->serial) - return -1; - - char buf[LOG_MAX_STRING_LEN]; - va_list argv; - va_start(argv, format); - -#ifdef __AVR__ - vsnprintf_P(buf, sizeof(buf), (PGM_P)format, argv); // progmem for AVR -#else - vsnprintf(buf, sizeof(buf), format, argv); // for the rest of the world -#endif - log_base->serial->print(buf); - va_end(argv); - - return 0; -} - /**********************************************************************************************************************/ -void BrbLogBase_HexDump(BrbLogBase *log_base, char *data, int size) -{ - char buf[32]; - int i; - - log_base->serial->print("HEXDUMP "); - snprintf(buf, sizeof(buf), " [%d]", size); - log_base->serial->print(buf); - log_base->serial->print(" bytes \r\n"); - - for (i = 0; i < size; i++) - { - snprintf(buf, sizeof(buf), " [x%02x] ", data[i]); - log_base->serial->print(buf); - - // log_base->serial->print("["); - // log_base->serial->print(data[i], HEX); - // log_base->serial->print("]"); - - if (i % 16 == 1) - log_base->serial->print("\r\n"); - - continue; - } - - log_base->serial->print(". . .\r\n"); - return; -} - /**********************************************************************************************************************/ -int BrbLogBase_Info(BrbLogBase *log_base) -{ - return BrbLogBase_PrintFmt(log_base, PSTR("HEAP: T %ld - M %d\r\n"), millis(), BrbBase_FreeRAM()); -} - /**********************************************************************************************************************/ +/* + * BrbLogBase.cpp + * + * Created on: 2018-10-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbBase.h" + +/**********************************************************************************************************************/ +BrbLogBase *BrbLogBase_New(void) +{ + BrbLogBase *log_base; + + log_base = (BrbLogBase *)calloc(1, sizeof(BrbLogBase)); + + return log_base; +} + /**********************************************************************************************************************/ +int BrbLogBase_Init(BrbLogBase *log_base, HardwareSerial *serial) +{ + /* Sanitize */ + if (!log_base) + return -1; + + log_base->serial = serial; + + /* Initialize Serial Console */ + log_base->serial->begin(LOG_BAUDRATE); + + return 0; +} + /**********************************************************************************************************************/ +int BrbLogBase_PrintFmt(BrbLogBase *log_base, const char *format, ...) +{ + /* Sanitize */ + if (!log_base || !log_base->serial) + return -1; + + char buf[LOG_MAX_STRING_LEN]; + va_list argv; + va_start(argv, format); + +#ifdef __AVR__ + vsnprintf_P(buf, sizeof(buf), (PGM_P)format, argv); // progmem for AVR +#else + vsnprintf(buf, sizeof(buf), format, argv); // for the rest of the world +#endif + log_base->serial->print(buf); + va_end(argv); + + return 0; +} + /**********************************************************************************************************************/ +void BrbLogBase_HexDump(BrbLogBase *log_base, char *data, int size) +{ + char buf[32]; + int i; + + log_base->serial->print("HEXDUMP "); + snprintf(buf, sizeof(buf), " [%d]", size); + log_base->serial->print(buf); + log_base->serial->print(" bytes \r\n"); + + for (i = 0; i < size; i++) + { + snprintf(buf, sizeof(buf), " [x%02x] ", data[i]); + log_base->serial->print(buf); + + // log_base->serial->print("["); + // log_base->serial->print(data[i], HEX); + // log_base->serial->print("]"); + + if (i % 16 == 1) + log_base->serial->print("\r\n"); + + continue; + } + + log_base->serial->print(". . .\r\n"); + return; +} + /**********************************************************************************************************************/ +int BrbLogBase_Info(BrbLogBase *log_base) +{ + return BrbLogBase_PrintFmt(log_base, PSTR("HEAP: T %ld - M %d\r\n"), millis(), BrbBase_FreeRAM()); +} + /**********************************************************************************************************************/ diff --git a/lib/BrbBase/src/log/BrbLogBase.h b/lib/BrbBase/src/log/BrbLogBase.h index f7da399..eec2d6d 100644 --- a/lib/BrbBase/src/log/BrbLogBase.h +++ b/lib/BrbBase/src/log/BrbLogBase.h @@ -1,129 +1,129 @@ -/* - * BrbLogBase.h - * - * Created on: 2018-10-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_LOG_BASE_H_ -#define BRB_LOG_BASE_H_ - -/**********************************************************************************************************************/ -#include "Arduino.h" -#include - -#define LOG_ENABLE 1 -// #define LOG_DISABLE_INFO 1 -// #define LOG_DISABLE_NOTICE 1 -// #define LOG_DISABLE_WARN 1 -// #define LOG_DISABLE_DEBUG 1 - -#ifndef LOG_BAUDRATE -// #define LOG_BAUDRATE 9600 -#define LOG_BAUDRATE 115200 -#endif - -#ifndef LOG_MAX_STRING_LEN -#define LOG_MAX_STRING_LEN 64 -#endif - -/**********************************************************************************************************************/ -typedef struct _BrbLogBase -{ - HardwareSerial *serial; - - struct { - unsigned int foo:1; - } flags; - -} BrbLogBase; -/**********************************************************************************************************************/ -BrbLogBase *BrbLogBase_New(void); -int BrbLogBase_Init(BrbLogBase *log_base, HardwareSerial *serial); -int BrbLogBase_PrintFmt(BrbLogBase *log_base, const char *format, ...); -// int BrbLogBase_Printf(BrbLogBase *log_base, const char *format, ...); -int BrbLogBase_Info(BrbLogBase *log_base); -void BrbLogBase_HexDump(BrbLogBase *log_base, char *data, int size); -/**********************************************************************************************************************/ -#define LOG_INIT(l,s) BrbLogBase_Init(l,s) - -#ifndef LOG_ENABLE -#define LOG_DISABLE_ALL 1 -#endif - -#ifndef LOG_DISABLE_INFO -#define LOG_ENABLE_INFO 1 -#endif - -#ifndef LOG_DISABLE_NOTICE -#define LOG_NOTICE_ENABLE 1 -#endif - -#ifndef LOG_DISABLE_WARN -#define LOG_WARN_ENABLE 1 -#endif - -#ifndef LOG_DISABLE_DEBUG -#define LOG_DEBUG_ENABLE 1 -#endif - -#ifdef LOG_DISABLE_ALL -#define LOG_PRINTF(log_base, format, ...) -#else -#define LOG_PRINTF(log_base, format, ...) BrbLogBase_PrintFmt(log_base, PSTR(format), ##__VA_ARGS__) -#endif - -#ifdef LOG_INFO_ENABLE -#define LOG_INFO(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) -#else -#define LOG_INFO(log_base, format, ...) -#endif - -#ifdef LOG_NOTICE_ENABLE -#define LOG_NOTICE(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) -#else -#define LOG_NOTICE(log_base, format, ...) -#endif - -#ifdef LOG_WARN_ENABLE -#define LOG_WARN(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) -#else -#define LOG_WARN(log_base, format, ...) -#endif - -#ifdef LOG_DEBUG_ENABLE -#define LOG_DEBUG(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) -#else -#define LOG_DEBUG(log_base, format, ...) -#endif - -#define LOG_HEAP(log_base) BrbLogBase_Info(log_base) - -/**********************************************************************************************************************/ +/* + * BrbLogBase.h + * + * Created on: 2018-10-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_LOG_BASE_H_ +#define BRB_LOG_BASE_H_ + +/**********************************************************************************************************************/ +#include "Arduino.h" +#include + +#define LOG_ENABLE 1 +// #define LOG_DISABLE_INFO 1 +// #define LOG_DISABLE_NOTICE 1 +// #define LOG_DISABLE_WARN 1 +// #define LOG_DISABLE_DEBUG 1 + +#ifndef LOG_BAUDRATE +// #define LOG_BAUDRATE 9600 +#define LOG_BAUDRATE 115200 +#endif + +#ifndef LOG_MAX_STRING_LEN +#define LOG_MAX_STRING_LEN 64 +#endif + +/**********************************************************************************************************************/ +typedef struct _BrbLogBase +{ + HardwareSerial *serial; + + struct { + unsigned int foo:1; + } flags; + +} BrbLogBase; +/**********************************************************************************************************************/ +BrbLogBase *BrbLogBase_New(void); +int BrbLogBase_Init(BrbLogBase *log_base, HardwareSerial *serial); +int BrbLogBase_PrintFmt(BrbLogBase *log_base, const char *format, ...); +// int BrbLogBase_Printf(BrbLogBase *log_base, const char *format, ...); +int BrbLogBase_Info(BrbLogBase *log_base); +void BrbLogBase_HexDump(BrbLogBase *log_base, char *data, int size); +/**********************************************************************************************************************/ +#define LOG_INIT(l,s) BrbLogBase_Init(l,s) + +#ifndef LOG_ENABLE +#define LOG_DISABLE_ALL 1 +#endif + +#ifndef LOG_DISABLE_INFO +#define LOG_ENABLE_INFO 1 +#endif + +#ifndef LOG_DISABLE_NOTICE +#define LOG_NOTICE_ENABLE 1 +#endif + +#ifndef LOG_DISABLE_WARN +#define LOG_WARN_ENABLE 1 +#endif + +#ifndef LOG_DISABLE_DEBUG +#define LOG_DEBUG_ENABLE 1 +#endif + +#ifdef LOG_DISABLE_ALL +#define LOG_PRINTF(log_base, format, ...) +#else +#define LOG_PRINTF(log_base, format, ...) BrbLogBase_PrintFmt(log_base, PSTR(format), ##__VA_ARGS__) +#endif + +#ifdef LOG_INFO_ENABLE +#define LOG_INFO(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) +#else +#define LOG_INFO(log_base, format, ...) +#endif + +#ifdef LOG_NOTICE_ENABLE +#define LOG_NOTICE(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) +#else +#define LOG_NOTICE(log_base, format, ...) +#endif + +#ifdef LOG_WARN_ENABLE +#define LOG_WARN(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) +#else +#define LOG_WARN(log_base, format, ...) +#endif + +#ifdef LOG_DEBUG_ENABLE +#define LOG_DEBUG(log_base, format, ...) LOG_PRINTF(log_base, format, ##__VA_ARGS__) +#else +#define LOG_DEBUG(log_base, format, ...) +#endif + +#define LOG_HEAP(log_base) BrbLogBase_Info(log_base) + +/**********************************************************************************************************************/ #endif /* BRB_LOG_BASE_H_ */ \ No newline at end of file diff --git a/lib/BrbBtnBase/BrbBtnBase.cpp b/lib/BrbBtnBase/BrbBtnBase.cpp index 0c0d600..0f16cba 100644 --- a/lib/BrbBtnBase/BrbBtnBase.cpp +++ b/lib/BrbBtnBase/BrbBtnBase.cpp @@ -1,106 +1,106 @@ -/* - * BrbBtnBase.cpp - * - * Created on: 2019-01-31 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbBtnBase.h" - -static int BrbBtnBase_DataInit(BrbBtnBase *btn_base, BrbBtnData *btn_data); -static int BrbBtnBase_DataCheck(BrbBtnBase *btn_base, BrbBtnData *btn_data); - -/**********************************************************************************************************************/ -int BrbBtnBase_Init(BrbBtnBase *btn_base) -{ - /* Sanitize */ - if (!btn_base) - return -1; - - /* Initialize all buttons */ - for (int i = 0; i < BRB_BTN_LAST_ITEM; i++) - { - BrbBtnBase_DataInit(btn_base, (BrbBtnData *)&btn_base->buttons[i]); - - continue; - } - - return 0; -} -/**********************************************************************************************************************/ -void BrbBtnBase_Loop(BrbBtnBase *btn_base) -{ - /* Process each button */ - for (int i = 0; i < BRB_BTN_LAST_ITEM; i++) - { - BrbBtnBase_DataCheck(btn_base, (BrbBtnData *)&btn_base->buttons[i]); - - continue; - } -} -/**********************************************************************************************************************/ -static int BrbBtnBase_DataInit(BrbBtnBase *btn_base, BrbBtnData *btn_data) -{ - if (btn_data->pin <= 0) - return -1; - - btn_data->hit = 0; - btn_data->state = HIGH; - - pinMode(btn_data->pin, INPUT_PULLUP); - digitalWrite(btn_data->pin, HIGH); - - return 0; -} -/**********************************************************************************************************************/ -static int BrbBtnBase_DataCheck(BrbBtnBase *btn_base, BrbBtnData *btn_data) -{ - int old_state; - - if (btn_data->pin <= 0) - return -1; - - old_state = btn_data->state; - btn_data->state = digitalRead(btn_data->pin); - - /* BTN CHANGEG STATE */ - if (old_state != btn_data->state) - { - LOG_DEBUG(btn_base->brb_base->log_base, "BTN [%d] - hit [%d] - State [%d] -> [%d]\r\n", btn_data->pin, btn_data->hit, old_state, btn_data->state); - - if (btn_data->state == HIGH) - { - btn_data->hit++; - delay(10); - } - } - - return 0; -} +/* + * BrbBtnBase.cpp + * + * Created on: 2019-01-31 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbBtnBase.h" + +static int BrbBtnBase_DataInit(BrbBtnBase *btn_base, BrbBtnData *btn_data); +static int BrbBtnBase_DataCheck(BrbBtnBase *btn_base, BrbBtnData *btn_data); + +/**********************************************************************************************************************/ +int BrbBtnBase_Init(BrbBtnBase *btn_base) +{ + /* Sanitize */ + if (!btn_base) + return -1; + + /* Initialize all buttons */ + for (int i = 0; i < BRB_BTN_LAST_ITEM; i++) + { + BrbBtnBase_DataInit(btn_base, (BrbBtnData *)&btn_base->buttons[i]); + + continue; + } + + return 0; +} +/**********************************************************************************************************************/ +void BrbBtnBase_Loop(BrbBtnBase *btn_base) +{ + /* Process each button */ + for (int i = 0; i < BRB_BTN_LAST_ITEM; i++) + { + BrbBtnBase_DataCheck(btn_base, (BrbBtnData *)&btn_base->buttons[i]); + + continue; + } +} +/**********************************************************************************************************************/ +static int BrbBtnBase_DataInit(BrbBtnBase *btn_base, BrbBtnData *btn_data) +{ + if (btn_data->pin <= 0) + return -1; + + btn_data->hit = 0; + btn_data->state = HIGH; + + pinMode(btn_data->pin, INPUT_PULLUP); + digitalWrite(btn_data->pin, HIGH); + + return 0; +} +/**********************************************************************************************************************/ +static int BrbBtnBase_DataCheck(BrbBtnBase *btn_base, BrbBtnData *btn_data) +{ + int old_state; + + if (btn_data->pin <= 0) + return -1; + + old_state = btn_data->state; + btn_data->state = digitalRead(btn_data->pin); + + /* BTN CHANGEG STATE */ + if (old_state != btn_data->state) + { + LOG_DEBUG(btn_base->brb_base->log_base, "BTN [%d] - hit [%d] - State [%d] -> [%d]\r\n", btn_data->pin, btn_data->hit, old_state, btn_data->state); + + if (btn_data->state == HIGH) + { + btn_data->hit++; + delay(10); + } + } + + return 0; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbBtnBase/BrbBtnBase.h b/lib/BrbBtnBase/BrbBtnBase.h index dde6b8f..db8f82d 100644 --- a/lib/BrbBtnBase/BrbBtnBase.h +++ b/lib/BrbBtnBase/BrbBtnBase.h @@ -1,75 +1,75 @@ -/* - * BrbBtnBase.h - * - * Created on: 2019-01-31 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_BTN_BASE_H_ -#define BRB_BTN_BASE_H_ -/**********************************************************************************************************************/ -#include -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ - -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ -typedef enum -{ - BRB_BTN_SELECT, - BRB_BTN_NEXT, - BRB_BTN_PREV, - BRB_BTN_LAST_ITEM -} BrbBtnCode; -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef struct _BrbBtnData -{ - int state; - - int hit; - int pin; - -} BrbBtnData; - -typedef struct _BrbBtnBase -{ - BrbBase *brb_base; - - BrbBtnData buttons[BRB_BTN_LAST_ITEM]; - -} BrbBtnBase; -/**********************************************************************************************************************/ -int BrbBtnBase_Init(BrbBtnBase *btn_base); -void BrbBtnBase_Loop(BrbBtnBase *btn_base); -/**********************************************************************************************************************/ +/* + * BrbBtnBase.h + * + * Created on: 2019-01-31 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_BTN_BASE_H_ +#define BRB_BTN_BASE_H_ +/**********************************************************************************************************************/ +#include +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ + +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ +typedef enum +{ + BRB_BTN_SELECT, + BRB_BTN_NEXT, + BRB_BTN_PREV, + BRB_BTN_LAST_ITEM +} BrbBtnCode; +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef struct _BrbBtnData +{ + int state; + + int hit; + int pin; + +} BrbBtnData; + +typedef struct _BrbBtnBase +{ + BrbBase *brb_base; + + BrbBtnData buttons[BRB_BTN_LAST_ITEM]; + +} BrbBtnBase; +/**********************************************************************************************************************/ +int BrbBtnBase_Init(BrbBtnBase *btn_base); +void BrbBtnBase_Loop(BrbBtnBase *btn_base); +/**********************************************************************************************************************/ #endif /* BRB_BTN_BASE_H_ */ \ No newline at end of file diff --git a/lib/BrbDisplayBase/BrbDisplayBase.cpp b/lib/BrbDisplayBase/BrbDisplayBase.cpp index 1c2a1d6..683013e 100644 --- a/lib/BrbDisplayBase/BrbDisplayBase.cpp +++ b/lib/BrbDisplayBase/BrbDisplayBase.cpp @@ -1,163 +1,163 @@ -/* - * BrbDisplayBase.cpp - * - * Created on: 2019-01-27 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbDisplayBase.h" - -/**********************************************************************************************************************/ -int BrbDisplayBase_Init(BrbDisplayBase *display_base) -{ - /* Sanitize */ - if (!display_base) - return -1; - - if (!display_base->tft) - { - display_base->tft = new ILI9341_due(display_base->pin_cs, display_base->pin_dc, display_base->pin_rst); - } - - LOG_NOTICE(display_base->brb_base->log_base, "DISPLAY - INIT [%d]\r\n", display_base->screen_arr_cnt); - - display_base->tft->begin(); - display_base->tft->setRotation(DISPLAY_ROTATION_DEFAULT); - display_base->tft->setFont(DISPLAY_FONT_DEFAULT); - - display_base->screen_last = -1; - display_base->action_code = -1; - display_base->flags.on_action = 0; - display_base->box.text_color = DISPLAY_COLOR_BOX_VALUE; - - if (display_base->pin_led > MIN_DIG_PIN) - { - pinMode(display_base->pin_led, OUTPUT); - digitalWrite(display_base->pin_led, HIGH); - } - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_Loop(BrbDisplayBase *display_base) -{ - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_ScreenAction(BrbDisplayBase *display_base, int action_code) -{ - int op_status; - - if (!display_base->screen_arr_ptr) - return 0; - - display_base->action_code = action_code; - display_base->flags.on_select = 0; - - if (!display_base->flags.on_action) - { - if (display_base->action_code == DISPLAY_ACTION_SELECT) - { - display_base->flags.on_select = 1; - display_base->action_code = -1; - // display_base->screen_last = -1; - } - - /* Press direction */ - else if (display_base->action_code == DISPLAY_ACTION_NEXT) - display_base->screen_cur++; - - else if (display_base->action_code == DISPLAY_ACTION_PREV) - display_base->screen_cur--; - } - - if (display_base->screen_cur < 0) - display_base->screen_cur = display_base->screen_arr_cnt - 1; - else if (display_base->screen_cur >= display_base->screen_arr_cnt) - display_base->screen_cur = 0; - - BrbDisplayScreenPrototype *screen_ptr = NULL; - - for (int i = 0; i < display_base->screen_arr_cnt; i++) - { - /* Found */ - if (display_base->screen_arr_ptr[i].cb_func && display_base->screen_arr_ptr[i].code == display_base->screen_cur) - { - screen_ptr = (BrbDisplayScreenPrototype *)&display_base->screen_arr_ptr[i]; - break; - } - } - - /* Get first screen, with reset info */ - if (!screen_ptr) - { - display_base->flags.on_action = 0; - display_base->flags.on_select = 0; - display_base->action_code = -1; - display_base->screen_last = -1; - display_base->screen_cur = 0; - screen_ptr = (BrbDisplayScreenPrototype *)&display_base->screen_arr_ptr[0]; - } - - /* Ignore Screen */ - if (screen_ptr->cb_func == NULL) - return 0; - - op_status = screen_ptr->cb_func(display_base->brb_base, display_base); - - display_base->screen_last = display_base->screen_cur; - - return op_status; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_SetTitle(BrbDisplayBase *display_base, const char *title_str) -{ - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, DISPLAY_SZ_MARGIN, DISPLAY_SZ_TITLE_W, DISPLAY_SZ_TITLE_H, DISPLAY_COLOR_TITLE_BG); - display_base->tft->setFont(DISPLAY_FONT_SCREEN_TITLE); - display_base->tft->setTextColor(DISPLAY_COLOR_TITLE_TEXT, DISPLAY_COLOR_TITLE_BG); - - display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN + DISPLAY_SZ_TITLE_M, DISPLAY_SZ_MARGIN + DISPLAY_SZ_TITLE_M); - display_base->tft->setTextScale(1); - display_base->tft->println((const __FlashStringHelper *)title_str); - display_base->tft->setTextColor(DISPLAY_COLOR_TEXT_DEFAULT, DISPLAY_COLOR_BG); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_SetBg(BrbDisplayBase *display_base) -{ - for (int i = 0; i < DISPLAY_SZ_BORDER; i++) - { - display_base->tft->drawRect(i, i, DISPLAY_SZ_DISPLAY_W - (i + 1), DISPLAY_SZ_DISPLAY_H - (i + 1), DISPLAY_COLOR_BORDER); - } - display_base->tft->fillRect(DISPLAY_SZ_BORDER, DISPLAY_SZ_BORDER, DISPLAY_SZ_DISPLAY_W - (DISPLAY_SZ_BORDER * 2), DISPLAY_SZ_DISPLAY_H - (DISPLAY_SZ_BORDER * 2), DISPLAY_COLOR_BG); - - return 0; -} +/* + * BrbDisplayBase.cpp + * + * Created on: 2019-01-27 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbDisplayBase.h" + +/**********************************************************************************************************************/ +int BrbDisplayBase_Init(BrbDisplayBase *display_base) +{ + /* Sanitize */ + if (!display_base) + return -1; + + if (!display_base->tft) + { + display_base->tft = new ILI9341_due(display_base->pin_cs, display_base->pin_dc, display_base->pin_rst); + } + + LOG_NOTICE(display_base->brb_base->log_base, "DISPLAY - INIT [%d]\r\n", display_base->screen_arr_cnt); + + display_base->tft->begin(); + display_base->tft->setRotation(DISPLAY_ROTATION_DEFAULT); + display_base->tft->setFont(DISPLAY_FONT_DEFAULT); + + display_base->screen_last = -1; + display_base->action_code = -1; + display_base->flags.on_action = 0; + display_base->box.text_color = DISPLAY_COLOR_BOX_VALUE; + + if (display_base->pin_led > MIN_DIG_PIN) + { + pinMode(display_base->pin_led, OUTPUT); + digitalWrite(display_base->pin_led, HIGH); + } + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_Loop(BrbDisplayBase *display_base) +{ + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_ScreenAction(BrbDisplayBase *display_base, int action_code) +{ + int op_status; + + if (!display_base->screen_arr_ptr) + return 0; + + display_base->action_code = action_code; + display_base->flags.on_select = 0; + + if (!display_base->flags.on_action) + { + if (display_base->action_code == DISPLAY_ACTION_SELECT) + { + display_base->flags.on_select = 1; + display_base->action_code = -1; + // display_base->screen_last = -1; + } + + /* Press direction */ + else if (display_base->action_code == DISPLAY_ACTION_NEXT) + display_base->screen_cur++; + + else if (display_base->action_code == DISPLAY_ACTION_PREV) + display_base->screen_cur--; + } + + if (display_base->screen_cur < 0) + display_base->screen_cur = display_base->screen_arr_cnt - 1; + else if (display_base->screen_cur >= display_base->screen_arr_cnt) + display_base->screen_cur = 0; + + BrbDisplayScreenPrototype *screen_ptr = NULL; + + for (int i = 0; i < display_base->screen_arr_cnt; i++) + { + /* Found */ + if (display_base->screen_arr_ptr[i].cb_func && display_base->screen_arr_ptr[i].code == display_base->screen_cur) + { + screen_ptr = (BrbDisplayScreenPrototype *)&display_base->screen_arr_ptr[i]; + break; + } + } + + /* Get first screen, with reset info */ + if (!screen_ptr) + { + display_base->flags.on_action = 0; + display_base->flags.on_select = 0; + display_base->action_code = -1; + display_base->screen_last = -1; + display_base->screen_cur = 0; + screen_ptr = (BrbDisplayScreenPrototype *)&display_base->screen_arr_ptr[0]; + } + + /* Ignore Screen */ + if (screen_ptr->cb_func == NULL) + return 0; + + op_status = screen_ptr->cb_func(display_base->brb_base, display_base); + + display_base->screen_last = display_base->screen_cur; + + return op_status; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_SetTitle(BrbDisplayBase *display_base, const char *title_str) +{ + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, DISPLAY_SZ_MARGIN, DISPLAY_SZ_TITLE_W, DISPLAY_SZ_TITLE_H, DISPLAY_COLOR_TITLE_BG); + display_base->tft->setFont(DISPLAY_FONT_SCREEN_TITLE); + display_base->tft->setTextColor(DISPLAY_COLOR_TITLE_TEXT, DISPLAY_COLOR_TITLE_BG); + + display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN + DISPLAY_SZ_TITLE_M, DISPLAY_SZ_MARGIN + DISPLAY_SZ_TITLE_M); + display_base->tft->setTextScale(1); + display_base->tft->println((const __FlashStringHelper *)title_str); + display_base->tft->setTextColor(DISPLAY_COLOR_TEXT_DEFAULT, DISPLAY_COLOR_BG); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_SetBg(BrbDisplayBase *display_base) +{ + for (int i = 0; i < DISPLAY_SZ_BORDER; i++) + { + display_base->tft->drawRect(i, i, DISPLAY_SZ_DISPLAY_W - (i + 1), DISPLAY_SZ_DISPLAY_H - (i + 1), DISPLAY_COLOR_BORDER); + } + display_base->tft->fillRect(DISPLAY_SZ_BORDER, DISPLAY_SZ_BORDER, DISPLAY_SZ_DISPLAY_W - (DISPLAY_SZ_BORDER * 2), DISPLAY_SZ_DISPLAY_H - (DISPLAY_SZ_BORDER * 2), DISPLAY_COLOR_BG); + + return 0; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbDisplayBase/BrbDisplayBase.h b/lib/BrbDisplayBase/BrbDisplayBase.h index 25b2911..49c2d92 100644 --- a/lib/BrbDisplayBase/BrbDisplayBase.h +++ b/lib/BrbDisplayBase/BrbDisplayBase.h @@ -1,262 +1,262 @@ -/* - * BrbDisplayBase.h - * - * Created on: 2019-01-27 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_DISPLAY_BASE_H_ -#define BRB_DISPLAY_BASE_H_ -/**********************************************************************************************************************/ -#include - -#include -// #include -// #include -#include -#include - -#include - -// #include -#include -// #include -// #include -// #include -#include - -#include -#include - -// #include -// #include -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ -/* FONTS */ -/**********************************************************/ -// #define DISPLAY_FONT_DEFAULT Arial_14 -// // // #define DISPLAY_FONT_DEFAULT SystemFont5x7 - -#define DISPLAY_FONT_SCREEN_TITLE Arial_14 - -#define DISPLAY_FONT_DEFAULT Arial_14 -#define DISPLAY_FONT_TITLE Open_Sans_32pt - -#define DISPLAY_FONT_ARC_VALUE Open_Sans_32pt -#define DISPLAY_FONT_ARC_TICK Arial_14 -#define DISPLAY_FONT_ARC_SUB Arial_14 - -#define DISPLAY_FONT_BOX_TITLE Arial_14 -#define DISPLAY_FONT_BOX_VALUE Open_Sans_32pt -#define DISPLAY_FONT_BOX_SCALE 1 -#define DISPLAY_FONT_BOX_SUB Arial_14 - - -#define DISPLAY_FONT_ICON IconWorks_B_32pt -#define DISPLAY_FONT_ICON2 IconWorks_B_32pt - -#define DISPLAY_FONT_ICON_INFO PSTR("m") -#define DISPLAY_FONT_ICON_ALERT PSTR("\xF9") - -#define DISPLAY_FONT_ICON_POWER PSTR("\xCF") -#define DISPLAY_FONT_ICON_AUX PSTR("4") - -#define DISPLAY_FONT_ICON_A2P PSTR("/") -#define DISPLAY_FONT_ICON_P2A PSTR("0") - -#define DISPLAY_FONT_ICON_LAMP PSTR("r") - -#define DISPLAY_FONT_ICON_ACTIVE PSTR("\xD9") -#define DISPLAY_FONT_ICON_USER PSTR("P") - -#define DISPLAY_FONT_ICON_C_OFF PSTR("X") - -#define DISPLAY_FONT_ICON_C_R PSTR("w") -#define DISPLAY_FONT_ICON_C_L PSTR("W") - -// #define DISPLAY_FONT_ICON Heydings_Icons_32pt -// #define DISPLAY_FONT_ICON2 Heydings_Controls_32pt - -// #define DISPLAY_FONT_ICON_INFO PSTR("i") -// #define DISPLAY_FONT_ICON_ALERT PSTR("!") -// #define DISPLAY_FONT_ICON_POWER PSTR("r") -// #define DISPLAY_FONT_ICON_AUX PSTR("4") - -// #define DISPLAY_FONT_ICON_A2P PSTR("N") -// #define DISPLAY_FONT_ICON_P2A PSTR("@") - -// #define DISPLAY_FONT_ICON_LAMP PSTR("l") - -// #define DISPLAY_FONT_ICON_HANDON PSTR("8") -// #define DISPLAY_FONT_ICON_USER PSTR("A") - -// #define DISPLAY_FONT_ICON_C_OFF PSTR("O") - -// #define DISPLAY_FONT_ICON_C_R PSTR("<") -// #define DISPLAY_FONT_ICON_C_L PSTR(">") - - - -/**********************************************************/ -/* SIZE */ -/**********************************************************/ -#define DISPLAY_SZ_DISPLAY_W 320 -#define DISPLAY_SZ_DISPLAY_H 240 - -#define DISPLAY_SZ_BORDER 0 -#define DISPLAY_SZ_MARGIN DISPLAY_SZ_BORDER + 5 - -#define DISPLAY_SZ_BOX_H 12 - -#define DISPLAY_SZ_TITLE_M 8 -#define DISPLAY_SZ_TITLE_H 25 -#define DISPLAY_SZ_TITLE_W DISPLAY_SZ_DISPLAY_W - (DISPLAY_SZ_MARGIN + DISPLAY_SZ_TITLE_M) -/**********************************************************/ -/* COLOR */ -/**********************************************************/ -#define DISPLAY_COLOR_BORDER ILI9341_DIMGRAY -#define DISPLAY_COLOR_BG ILI9341_WHITE - -#define DISPLAY_COLOR_TITLE_TEXT ILI9341_WHITE -#define DISPLAY_COLOR_TITLE_BG ILI9341_MIDNIGHTBLUE - -#define DISPLAY_COLOR_TEXT_DEFAULT ILI9341_BLACK - -#define DISPLAY_COLOR_BOX_TITLE ILI9341_BLACK -#define DISPLAY_COLOR_BOX_VALUE ILI9341_ORANGERED - -#define DISPLAY_ROTATION_DEFAULT iliRotation270 - -#define DISPLAY_ARC_RED2RED 0 -#define DISPLAY_ARC_GREEN2GREEN 1 -#define DISPLAY_ARC_BLUE2BLUE 2 -#define DISPLAY_ARC_BLUE2RED 3 -#define DISPLAY_ARC_GREEN2RED 4 -#define DISPLAY_ARC_RED2GREEN 5 - -#define ARC_SEG 3 -#define ARC_INC 5 -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ -typedef enum -{ - DISPLAY_ACTION_SELECT, - DISPLAY_ACTION_NEXT, - DISPLAY_ACTION_PREV, - DISPLAY_ACTION_LAST_ITEM -} BrbDisplayActionCode; - -typedef struct _BrbDisplayScreenPrototype -{ - int code; - const char *title_ptr; - BrbGenericCBH *cb_func; -} BrbDisplayScreenPrototype; - -/**********************************************************************************************************************/ -typedef struct _BrbDisplayBase -{ - BrbBase *brb_base; - - // Adafruit_ILI9341 *tft; - ILI9341_due *tft; - - int screen_last; - int screen_cur; - int screen_int; - - int action_code; - - int user_int; - - uint8_t pin_led; - uint8_t pin_dc; - uint8_t pin_rst; - uint8_t pin_cs; - uint8_t pin_miso; - uint8_t pin_mosi; - uint8_t pin_clk; - - BrbDisplayScreenPrototype *screen_arr_ptr; - int screen_arr_cnt; - - struct - { - uint16_t bg_color; - - uint16_t text_color; - uint16_t text_scale; - } box; - - // BrbDisplayScreenEvents cb_show[DISPLAY_SCREEN_LASTITEM]; - // BrbDisplayScreenEvents cb_screen[DISPLAY_SCREEN_LASTITEM]; - - struct - { - unsigned int on_action : 1; - unsigned int on_select : 1; - } flags; - -} BrbDisplayBase; -/**********************************************************************************************************************/ -int BrbDisplayBase_Init(BrbDisplayBase *display_base); - -int BrbDisplayBase_SetTitle(BrbDisplayBase *display_base, const char *title_str); -int BrbDisplayBase_SetBg(BrbDisplayBase *display_base); - -int BrbDisplayBase_ScreenAction(BrbDisplayBase *display_base, int action_code); - -int BrbDisplayBase_SetScreenShowCB(BrbDisplayBase *display_base, int screen_code, BrbGenericCBH *cb_func, void *cb_data); -int BrbDisplayBase_SetScreenActionCB(BrbDisplayBase *display_base, int screen_code, BrbGenericCBH *cb_func, void *cb_data); - -/**********************************************************************************************************************/ -unsigned int BrbDisplayBase_Rainbow(byte value); - -/**********************************************************************************************************************/ -int BrbDisplayBase_DrawBtn(BrbDisplayBase *display_base, int btn_x, int btn_y, int btn_w, int btn_h, const char *text_ptr, int btn_color, int txt_color); -int BrbDisplayBase_DrawBarGraph(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, int16_t pos_h, double value, double min, double max); -// int BrbDisplayBase_DrawArc(BrbDisplayBase *display_base, int value, int vmin, int vmax, int x, int y, int r, char *units, byte scheme); -int BrbDisplayBase_DrawArc(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme); -int BrbDisplayBase_DrawArcSeg(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme, int tick, int seg, int inc); - -int BrbDisplayBase_BoxTitle(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr); -int BrbDisplayBase_BoxSub(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, double value, int dots, const char *unit_ptr); - -int BrbDisplayBase_BoxUptime(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, long seconds); -int BrbDisplayBase_BoxMax(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, int value, int max); -int BrbDisplayBase_BoxValue(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, double value, int dots); -int BrbDisplayBase_BoxUnit(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *unit_ptr); - -int BrbDisplayBase_BoxFmt(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, const char *format, ...); -/**********************************************************************************************************************/ - -/**********************************************************************************************************************/ +/* + * BrbDisplayBase.h + * + * Created on: 2019-01-27 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_DISPLAY_BASE_H_ +#define BRB_DISPLAY_BASE_H_ +/**********************************************************************************************************************/ +#include + +#include +// #include +// #include +#include +#include + +#include + +// #include +#include +// #include +// #include +// #include +#include + +#include +#include + +// #include +// #include +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ +/* FONTS */ +/**********************************************************/ +// #define DISPLAY_FONT_DEFAULT Arial_14 +// // // #define DISPLAY_FONT_DEFAULT SystemFont5x7 + +#define DISPLAY_FONT_SCREEN_TITLE Arial_14 + +#define DISPLAY_FONT_DEFAULT Arial_14 +#define DISPLAY_FONT_TITLE Open_Sans_32pt + +#define DISPLAY_FONT_ARC_VALUE Open_Sans_32pt +#define DISPLAY_FONT_ARC_TICK Arial_14 +#define DISPLAY_FONT_ARC_SUB Arial_14 + +#define DISPLAY_FONT_BOX_TITLE Arial_14 +#define DISPLAY_FONT_BOX_VALUE Open_Sans_32pt +#define DISPLAY_FONT_BOX_SCALE 1 +#define DISPLAY_FONT_BOX_SUB Arial_14 + + +#define DISPLAY_FONT_ICON IconWorks_B_32pt +#define DISPLAY_FONT_ICON2 IconWorks_B_32pt + +#define DISPLAY_FONT_ICON_INFO PSTR("m") +#define DISPLAY_FONT_ICON_ALERT PSTR("\xF9") + +#define DISPLAY_FONT_ICON_POWER PSTR("\xCF") +#define DISPLAY_FONT_ICON_AUX PSTR("4") + +#define DISPLAY_FONT_ICON_A2P PSTR("/") +#define DISPLAY_FONT_ICON_P2A PSTR("0") + +#define DISPLAY_FONT_ICON_LAMP PSTR("r") + +#define DISPLAY_FONT_ICON_ACTIVE PSTR("\xD9") +#define DISPLAY_FONT_ICON_USER PSTR("P") + +#define DISPLAY_FONT_ICON_C_OFF PSTR("X") + +#define DISPLAY_FONT_ICON_C_R PSTR("w") +#define DISPLAY_FONT_ICON_C_L PSTR("W") + +// #define DISPLAY_FONT_ICON Heydings_Icons_32pt +// #define DISPLAY_FONT_ICON2 Heydings_Controls_32pt + +// #define DISPLAY_FONT_ICON_INFO PSTR("i") +// #define DISPLAY_FONT_ICON_ALERT PSTR("!") +// #define DISPLAY_FONT_ICON_POWER PSTR("r") +// #define DISPLAY_FONT_ICON_AUX PSTR("4") + +// #define DISPLAY_FONT_ICON_A2P PSTR("N") +// #define DISPLAY_FONT_ICON_P2A PSTR("@") + +// #define DISPLAY_FONT_ICON_LAMP PSTR("l") + +// #define DISPLAY_FONT_ICON_HANDON PSTR("8") +// #define DISPLAY_FONT_ICON_USER PSTR("A") + +// #define DISPLAY_FONT_ICON_C_OFF PSTR("O") + +// #define DISPLAY_FONT_ICON_C_R PSTR("<") +// #define DISPLAY_FONT_ICON_C_L PSTR(">") + + + +/**********************************************************/ +/* SIZE */ +/**********************************************************/ +#define DISPLAY_SZ_DISPLAY_W 320 +#define DISPLAY_SZ_DISPLAY_H 240 + +#define DISPLAY_SZ_BORDER 0 +#define DISPLAY_SZ_MARGIN DISPLAY_SZ_BORDER + 5 + +#define DISPLAY_SZ_BOX_H 12 + +#define DISPLAY_SZ_TITLE_M 8 +#define DISPLAY_SZ_TITLE_H 25 +#define DISPLAY_SZ_TITLE_W DISPLAY_SZ_DISPLAY_W - (DISPLAY_SZ_MARGIN + DISPLAY_SZ_TITLE_M) +/**********************************************************/ +/* COLOR */ +/**********************************************************/ +#define DISPLAY_COLOR_BORDER ILI9341_DIMGRAY +#define DISPLAY_COLOR_BG ILI9341_WHITE + +#define DISPLAY_COLOR_TITLE_TEXT ILI9341_WHITE +#define DISPLAY_COLOR_TITLE_BG ILI9341_MIDNIGHTBLUE + +#define DISPLAY_COLOR_TEXT_DEFAULT ILI9341_BLACK + +#define DISPLAY_COLOR_BOX_TITLE ILI9341_BLACK +#define DISPLAY_COLOR_BOX_VALUE ILI9341_ORANGERED + +#define DISPLAY_ROTATION_DEFAULT iliRotation270 + +#define DISPLAY_ARC_RED2RED 0 +#define DISPLAY_ARC_GREEN2GREEN 1 +#define DISPLAY_ARC_BLUE2BLUE 2 +#define DISPLAY_ARC_BLUE2RED 3 +#define DISPLAY_ARC_GREEN2RED 4 +#define DISPLAY_ARC_RED2GREEN 5 + +#define ARC_SEG 3 +#define ARC_INC 5 +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ +typedef enum +{ + DISPLAY_ACTION_SELECT, + DISPLAY_ACTION_NEXT, + DISPLAY_ACTION_PREV, + DISPLAY_ACTION_LAST_ITEM +} BrbDisplayActionCode; + +typedef struct _BrbDisplayScreenPrototype +{ + int code; + const char *title_ptr; + BrbGenericCBH *cb_func; +} BrbDisplayScreenPrototype; + +/**********************************************************************************************************************/ +typedef struct _BrbDisplayBase +{ + BrbBase *brb_base; + + // Adafruit_ILI9341 *tft; + ILI9341_due *tft; + + int screen_last; + int screen_cur; + int screen_int; + + int action_code; + + int user_int; + + uint8_t pin_led; + uint8_t pin_dc; + uint8_t pin_rst; + uint8_t pin_cs; + uint8_t pin_miso; + uint8_t pin_mosi; + uint8_t pin_clk; + + BrbDisplayScreenPrototype *screen_arr_ptr; + int screen_arr_cnt; + + struct + { + uint16_t bg_color; + + uint16_t text_color; + uint16_t text_scale; + } box; + + // BrbDisplayScreenEvents cb_show[DISPLAY_SCREEN_LASTITEM]; + // BrbDisplayScreenEvents cb_screen[DISPLAY_SCREEN_LASTITEM]; + + struct + { + unsigned int on_action : 1; + unsigned int on_select : 1; + } flags; + +} BrbDisplayBase; +/**********************************************************************************************************************/ +int BrbDisplayBase_Init(BrbDisplayBase *display_base); + +int BrbDisplayBase_SetTitle(BrbDisplayBase *display_base, const char *title_str); +int BrbDisplayBase_SetBg(BrbDisplayBase *display_base); + +int BrbDisplayBase_ScreenAction(BrbDisplayBase *display_base, int action_code); + +int BrbDisplayBase_SetScreenShowCB(BrbDisplayBase *display_base, int screen_code, BrbGenericCBH *cb_func, void *cb_data); +int BrbDisplayBase_SetScreenActionCB(BrbDisplayBase *display_base, int screen_code, BrbGenericCBH *cb_func, void *cb_data); + +/**********************************************************************************************************************/ +unsigned int BrbDisplayBase_Rainbow(byte value); + +/**********************************************************************************************************************/ +int BrbDisplayBase_DrawBtn(BrbDisplayBase *display_base, int btn_x, int btn_y, int btn_w, int btn_h, const char *text_ptr, int btn_color, int txt_color); +int BrbDisplayBase_DrawBarGraph(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, int16_t pos_h, double value, double min, double max); +// int BrbDisplayBase_DrawArc(BrbDisplayBase *display_base, int value, int vmin, int vmax, int x, int y, int r, char *units, byte scheme); +int BrbDisplayBase_DrawArc(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme); +int BrbDisplayBase_DrawArcSeg(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme, int tick, int seg, int inc); + +int BrbDisplayBase_BoxTitle(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr); +int BrbDisplayBase_BoxSub(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, double value, int dots, const char *unit_ptr); + +int BrbDisplayBase_BoxUptime(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, long seconds); +int BrbDisplayBase_BoxMax(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, int value, int max); +int BrbDisplayBase_BoxValue(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, double value, int dots); +int BrbDisplayBase_BoxUnit(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *unit_ptr); + +int BrbDisplayBase_BoxFmt(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, const char *format, ...); +/**********************************************************************************************************************/ + +/**********************************************************************************************************************/ #endif /* BRB_DISPLAY_BASE_H_ */ \ No newline at end of file diff --git a/lib/BrbDisplayBase/BrbDisplayBox.cpp b/lib/BrbDisplayBase/BrbDisplayBox.cpp index 6ea832f..565f5b5 100644 --- a/lib/BrbDisplayBase/BrbDisplayBox.cpp +++ b/lib/BrbDisplayBase/BrbDisplayBox.cpp @@ -1,190 +1,190 @@ -/* - * BrbDisplayBox.cpp - * - * Created on: 2019-01-27 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbDisplayBase.h" - -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxTitle(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr) -{ - // display_base->tft->fillRect(pos_x, pos_y, 140, 1, DISPLAY_COLOR_BOX_TITLE); - display_base->tft->setTextColor(DISPLAY_COLOR_BOX_TITLE, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_TITLE); - display_base->tft->setTextScale(1); - - display_base->tft->cursorToXY(pos_x, pos_y); - display_base->tft->print((const __FlashStringHelper *)title_ptr); - - // BrbDisplayBase_PrintAlignFlash(display_base, title_ptr, pos_x, pos_y, DISPLAY_TEXT_ALIGN_BL); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxSub(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, double value, int dots, const char *unit_ptr) -{ - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_BoxTitle(display_base, pos_x, pos_y, title_ptr); - } - - BrbDisplayBase_BoxValue(display_base, pos_x, pos_y + DISPLAY_SZ_BOX_H, value, dots); - - BrbDisplayBase_BoxUnit(display_base, pos_x, pos_y + DISPLAY_SZ_BOX_H, unit_ptr); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxUptime(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, long seconds) -{ - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_BoxTitle(display_base, pos_x, pos_y, title_ptr); - } - - display_base->tft->setTextColor(display_base->box.text_color, DISPLAY_COLOR_BG); - // display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); - // display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); - display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); - display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); - - display_base->tft->cursorToXY(pos_x, pos_y + DISPLAY_SZ_BOX_H); - - char value_str[32] = {0}; - // long secs = seconds % 60; - long secs = seconds; - long mins = secs / 60; - long hours = mins / 60; - long days = hours / 24; - - secs = secs - (mins * 60); - mins = mins - (hours * 60); - hours = hours - (days * 24); - - if (days > 0) - sprintf(value_str, "%ldd %02ld", days, hours); - else if (hours > 0) - sprintf(value_str, "%02ld:%02ld", hours, mins); - else if (mins > 0) - sprintf(value_str, "--:%02ld", mins); - else if (secs > 0) - sprintf(value_str, "--:%02ld", secs); - else - sprintf(value_str, "--:--:--"); - - display_base->tft->print(value_str); - - - display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); - display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); - display_base->tft->cursorToXY(display_base->tft->getCursorX() + 5, pos_y + DISPLAY_SZ_BOX_H); - - if (days > 0) - sprintf(value_str, "%02ld:%02ld", mins, secs); - else if (hours > 0) - sprintf(value_str, "%02ld", secs); - else if (mins > 0) - sprintf(value_str, "%02ld", secs); - else if (secs > 0) - sprintf(value_str, "s"); - else - sprintf(value_str, ""); - - display_base->tft->print(value_str); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxMax(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, int value, int max) -{ - BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, title_ptr, PSTR("%d/%d"), value, max); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxValue(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, double value, int dots) -{ - display_base->tft->setTextColor(display_base->box.text_color, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); - display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); - - display_base->tft->cursorToXY(pos_x, pos_y); - display_base->tft->print(value, dots); - - // char value_str[16] = {0}; - // sprintf(value_str, "%02.01f", value); - // pos_x = BrbDisplayBase_PrintAlignStr(display_base, value_str, pos_x, pos_y, DISPLAY_TEXT_ALIGN_BL); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxUnit(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *unit_ptr) -{ - // display_base->tft->setTextColor(ILI9341_MEDIUMAQUAMARINE, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); - display_base->tft->setTextScale(1); - - display_base->tft->cursorToXY(display_base->tft->getCursorX() + 5, pos_y); - display_base->tft->println((const __FlashStringHelper *)unit_ptr); - - // pos_x = BrbDisplayBase_PrintAlignFlash(display_base, unit_ptr, display_base->tft->getCursorX() + 5, pos_y, DISPLAY_TEXT_ALIGN_BL); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_BoxFmt(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, const char *format, ...) -{ - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_BoxTitle(display_base, pos_x, pos_y, title_ptr); - } - - display_base->tft->setTextColor(display_base->box.text_color, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); - display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); - display_base->tft->cursorToXY(pos_x, pos_y + DISPLAY_SZ_BOX_H); - - char buf[LOG_MAX_STRING_LEN]; - va_list argv; - va_start(argv, format); - -#ifdef __AVR__ - vsnprintf_P(buf, sizeof(buf), (PGM_P)format, argv); // progmem for AVR -#else - vsnprintf(buf, sizeof(buf), format, argv); // for the rest of the world -#endif - - display_base->tft->print(buf); - va_end(argv); - - return 0; -} +/* + * BrbDisplayBox.cpp + * + * Created on: 2019-01-27 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbDisplayBase.h" + +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxTitle(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr) +{ + // display_base->tft->fillRect(pos_x, pos_y, 140, 1, DISPLAY_COLOR_BOX_TITLE); + display_base->tft->setTextColor(DISPLAY_COLOR_BOX_TITLE, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_TITLE); + display_base->tft->setTextScale(1); + + display_base->tft->cursorToXY(pos_x, pos_y); + display_base->tft->print((const __FlashStringHelper *)title_ptr); + + // BrbDisplayBase_PrintAlignFlash(display_base, title_ptr, pos_x, pos_y, DISPLAY_TEXT_ALIGN_BL); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxSub(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, double value, int dots, const char *unit_ptr) +{ + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_BoxTitle(display_base, pos_x, pos_y, title_ptr); + } + + BrbDisplayBase_BoxValue(display_base, pos_x, pos_y + DISPLAY_SZ_BOX_H, value, dots); + + BrbDisplayBase_BoxUnit(display_base, pos_x, pos_y + DISPLAY_SZ_BOX_H, unit_ptr); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxUptime(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, long seconds) +{ + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_BoxTitle(display_base, pos_x, pos_y, title_ptr); + } + + display_base->tft->setTextColor(display_base->box.text_color, DISPLAY_COLOR_BG); + // display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); + // display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); + display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); + display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); + + display_base->tft->cursorToXY(pos_x, pos_y + DISPLAY_SZ_BOX_H); + + char value_str[32] = {0}; + // long secs = seconds % 60; + long secs = seconds; + long mins = secs / 60; + long hours = mins / 60; + long days = hours / 24; + + secs = secs - (mins * 60); + mins = mins - (hours * 60); + hours = hours - (days * 24); + + if (days > 0) + sprintf(value_str, "%ldd %02ld", days, hours); + else if (hours > 0) + sprintf(value_str, "%02ld:%02ld", hours, mins); + else if (mins > 0) + sprintf(value_str, "--:%02ld", mins); + else if (secs > 0) + sprintf(value_str, "--:%02ld", secs); + else + sprintf(value_str, "--:--:--"); + + display_base->tft->print(value_str); + + + display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); + display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); + display_base->tft->cursorToXY(display_base->tft->getCursorX() + 5, pos_y + DISPLAY_SZ_BOX_H); + + if (days > 0) + sprintf(value_str, "%02ld:%02ld", mins, secs); + else if (hours > 0) + sprintf(value_str, "%02ld", secs); + else if (mins > 0) + sprintf(value_str, "%02ld", secs); + else if (secs > 0) + sprintf(value_str, "s"); + else + sprintf(value_str, ""); + + display_base->tft->print(value_str); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxMax(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, int value, int max) +{ + BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, title_ptr, PSTR("%d/%d"), value, max); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxValue(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, double value, int dots) +{ + display_base->tft->setTextColor(display_base->box.text_color, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); + display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); + + display_base->tft->cursorToXY(pos_x, pos_y); + display_base->tft->print(value, dots); + + // char value_str[16] = {0}; + // sprintf(value_str, "%02.01f", value); + // pos_x = BrbDisplayBase_PrintAlignStr(display_base, value_str, pos_x, pos_y, DISPLAY_TEXT_ALIGN_BL); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxUnit(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *unit_ptr) +{ + // display_base->tft->setTextColor(ILI9341_MEDIUMAQUAMARINE, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); + display_base->tft->setTextScale(1); + + display_base->tft->cursorToXY(display_base->tft->getCursorX() + 5, pos_y); + display_base->tft->println((const __FlashStringHelper *)unit_ptr); + + // pos_x = BrbDisplayBase_PrintAlignFlash(display_base, unit_ptr, display_base->tft->getCursorX() + 5, pos_y, DISPLAY_TEXT_ALIGN_BL); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_BoxFmt(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, const char *title_ptr, const char *format, ...) +{ + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_BoxTitle(display_base, pos_x, pos_y, title_ptr); + } + + display_base->tft->setTextColor(display_base->box.text_color, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); + display_base->tft->setTextScale(DISPLAY_FONT_BOX_SCALE); + display_base->tft->cursorToXY(pos_x, pos_y + DISPLAY_SZ_BOX_H); + + char buf[LOG_MAX_STRING_LEN]; + va_list argv; + va_start(argv, format); + +#ifdef __AVR__ + vsnprintf_P(buf, sizeof(buf), (PGM_P)format, argv); // progmem for AVR +#else + vsnprintf(buf, sizeof(buf), format, argv); // for the rest of the world +#endif + + display_base->tft->print(buf); + va_end(argv); + + return 0; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbDisplayBase/BrbDisplayDraw.cpp b/lib/BrbDisplayBase/BrbDisplayDraw.cpp index c885bad..c1d326a 100644 --- a/lib/BrbDisplayBase/BrbDisplayDraw.cpp +++ b/lib/BrbDisplayBase/BrbDisplayDraw.cpp @@ -1,455 +1,455 @@ -/* - * BrbDisplayDraw.cpp - * - * Created on: 2019-02-18 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbDisplayBase.h" - -static unsigned int color_lt(unsigned int color, float pct); -/**********************************************************************************************************************/ -int BrbDisplayBase_DrawBtn(BrbDisplayBase *display_base, int btn_x, int btn_y, int btn_w, int btn_h, const char *text_ptr, int btn_color, int txt_color) -{ - display_base->tft->fillRect(btn_x, btn_y, btn_w, btn_h, btn_color); - display_base->tft->setTextColor(txt_color, btn_color); - display_base->tft->printAtPivoted((const __FlashStringHelper *)text_ptr, (btn_w / 2) + btn_x, (btn_h / 2) + btn_y, gTextPivotMiddleCenter); - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_DrawArcText(BrbDisplayBase *display_base, double value, int x, int y, int r, const char *units, int text_color) -{ - // Convert value to a string - char buf[10] = {0}; - byte len = 4; - - if (value > 999) - len = 5; - - dtostrf(value, len, 1, buf); - - // Set the text color to default - display_base->tft->setTextColor(ILI9341_BLACK, ILI9341_WHITE); - display_base->tft->setTextColor(text_color, ILI9341_WHITE); - - display_base->tft->setFont(DISPLAY_FONT_ARC_VALUE); - - /* Check size and spacing */ - if (r > 130) - { - display_base->tft->setTextScale(2); - display_base->tft->printAtPivoted(buf, x, y - 30, gTextPivotMiddleCenter); - } - else if (r > 84) - { - display_base->tft->setTextScale(1); - display_base->tft->printAtPivoted(buf, x, y - 25, gTextPivotMiddleCenter); - } - else if (r > 50) - { - display_base->tft->setTextScale(1); - display_base->tft->printAtPivoted(buf, x, y - 15, gTextPivotMiddleCenter); - } - else - { - display_base->tft->setFont(DISPLAY_FONT_ARC_SUB); - display_base->tft->setTextScale(2); - display_base->tft->printAtPivoted(buf, x, y - 10, gTextPivotMiddleCenter); - } - - if (units) - { - display_base->tft->setFont(DISPLAY_FONT_ARC_SUB); - - if (r > 130) - { - display_base->tft->setTextScale(3); - display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 15, gTextPivotMiddleCenter); - } - else if (r > 84) - { - display_base->tft->setTextScale(2); - display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 15, gTextPivotMiddleCenter); - } - else if (r > 50) - { - display_base->tft->setTextScale(1); - display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 12, gTextPivotMiddleCenter); - } - else - { - display_base->tft->setTextScale(1); - display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 5, gTextPivotMiddleCenter); - } - } - - return 0; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_DrawArc(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme) -{ - return BrbDisplayBase_DrawArcSeg(display_base, value, vmin, vmax, x, y, r, units, scheme, 0, ARC_SEG, ARC_INC); -} -/**********************************************************************************************************************/ -int BrbDisplayBase_DrawArcSeg(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme, int tick, int seg, int inc) -{ - /* Calculate coords of centre of ring */ - x += r; - y += r; - - /* Width of outer ring is 1/x of radius */ - int w = r / 6; - - int angle = 95; // Half the sweep angle of meter (300 degrees) - - int text_color = ILI9341_BLACK; // To hold the text color - - int v = map(value, vmin, vmax, -angle, angle); // Map the value to an angle v - - int tl; - int i; - float sx; - float sy; - uint16_t x0; - uint16_t y0; - uint16_t x1; - uint16_t y1; - float sx2; - float sy2; - int x2; - int y2; - int x3; - int y3; - - display_base->tft->fillRect(x - r, y - r, r * 2, (r * 1), ILI9341_WHITE); - - // Draw color blocks every inc degrees - for (i = -angle; i < angle; i += inc) - { - // Choose color from scheme - int color_cur = 0; - switch (scheme) - { - case DISPLAY_ARC_RED2RED: - color_cur = ILI9341_RED; - break; // Fixed color - case DISPLAY_ARC_GREEN2GREEN: - color_cur = ILI9341_GREEN; - break; // Fixed color - case DISPLAY_ARC_BLUE2BLUE: - color_cur = ILI9341_BLUE; - break; // Fixed color - case DISPLAY_ARC_BLUE2RED: - color_cur = BrbDisplayBase_Rainbow(map(i, -angle, angle, 0, 127)); - break; // Full spectrum blue to red - case DISPLAY_ARC_GREEN2RED: - color_cur = BrbDisplayBase_Rainbow(map(i, -angle, angle, 63, 127)); - color_cur = color_lt(color_cur, 0.9); - break; // Green to red (high temperature etc) - case DISPLAY_ARC_RED2GREEN: - color_cur = BrbDisplayBase_Rainbow(map(i, -angle, angle, 127, 63)); - color_cur = color_lt(color_cur, 0.9); - break; // Red to green (low battery etc) - default: - color_cur = ILI9341_BLUE; - break; // Fixed color - } - - // Calculate pair of coordinates for segment start - sx = cos((i - 90) * 0.0174532925); - sy = sin((i - 90) * 0.0174532925); - x0 = sx * (r - w) + x; - y0 = sy * (r - w) + y; - x1 = sx * r + x; - y1 = sy * r + y; - - // Calculate pair of coordinates for segment end - sx2 = cos((i + seg - 90) * 0.0174532925); - sy2 = sin((i + seg - 90) * 0.0174532925); - x2 = sx2 * (r - w) + x; - y2 = sy2 * (r - w) + y; - x3 = sx2 * r + x; - y3 = sy2 * r + y; - - // Fill in colored segments with 2 triangles - if (i < v) - { - display_base->tft->fillTriangle(x0, y0, x1, y1, x2, y2, color_cur); - display_base->tft->fillTriangle(x1, y1, x2, y2, x3, y3, color_cur); - // Save the last color drawn - text_color = color_cur; - } - else // Fill in blank segments - { - display_base->tft->fillTriangle(x0, y0, x1, y1, x2, y2, ILI9341_LIGHTGREY); - display_base->tft->fillTriangle(x1, y1, x2, y2, x3, y3, ILI9341_LIGHTGREY); - } - - if (tick > 0) - { - /* Short scale tick length */ - if (i % 25 != 0) - tl = tick; - else - tl = tick + 3; - - // Recalculate coords in case tick length changed - x0 = sx * (r + tl) + x; - y0 = sy * (r + tl) + y; - x1 = sx * (r + 2) + x; - y1 = sy * (r + 2) + y; - - // Draw tick - display_base->tft->drawLine(x0, y0, x1, y1, ILI9341_BLACK); - } - - // // Check if labels should be drawn, with position tweaks - // if (i % 25 == 0) - // { - // display_base->tft->setTextColor(ILI9341_BLACK, ILI9341_WHITE); - // // Calculate label positions - // // x0 = sx * (r + tl) + x; - // // y0 = sy * (r + tl) + y; - // switch (i / 25) - // { - // case -2: - // display_base->tft->printAtPivoted("0", x0, y0 - 12, gTextPivotMiddleCenter); - // break; - // case -1: - // display_base->tft->printAtPivoted("25", x0, y0 - 9, gTextPivotMiddleCenter); - // break; - // case 0: - // display_base->tft->printAtPivoted("50", x0, y0 - 6, gTextPivotMiddleCenter); - // break; - // case 1: - // display_base->tft->printAtPivoted("75", x0, y0 - 9, gTextPivotMiddleCenter); - // break; - // case 2: - // display_base->tft->printAtPivoted("100", x0, y0 - 12, gTextPivotMiddleCenter); - // break; - // } - // } - } - - if (tick > 0) - { - // Draw scale arc, don't draw the last part - sx = cos((i - 90) * 0.0174532925); - sy = sin((i - 90) * 0.0174532925); - x0 = sx * (r + tl) + x; - y0 = sy * (r + tl) + y; - x1 = sx * (r + 2) + x; - y1 = sy * (r + 2) + y; - - display_base->tft->drawLine(x0, y0, x1, y1, ILI9341_BLACK); - } - - BrbDisplayBase_DrawArcText(display_base, value, x, y, r, units, text_color); - - display_base->tft->setTextColor(ILI9341_BLACK, ILI9341_WHITE); - display_base->tft->setFont(DISPLAY_FONT_DEFAULT); - display_base->tft->setTextScale(1); - display_base->tft->cursorToXY(x - r, y + 10); - display_base->tft->println(vmin); - - display_base->tft->cursorToXY(x + r - (vmax > 99 ? 20 : 15), y + 10); - display_base->tft->println(vmax); - - // Calculate and return right hand side x coordinate - return x + r; -} -/**********************************************************************************************************************/ -static unsigned int color_lt(unsigned int color, float pct) -{ - byte r = (color >> 8) & 0x00F8; - byte g = (color >> 3) & 0x00FC; - byte b = (color << 3) & 0x00F8; - - r = min(max(0, r * pct), 255); - g = min(max(0, g * pct), 255); - b = min(max(0, b * pct), 255); - - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); - // return (r << 11) + (g << 5) + b; -} -/**********************************************************************************************************************/ -/* Return a 16 bit rainbow color */ -/**********************************************************************************************************************/ -unsigned int BrbDisplayBase_Rainbow(byte value) -{ - /* Value is expected to be in range 0-127 */ - - /* The value is converted to a spectrum color from 0 = blue through to 127 = red */ - - /* RRRRRGGGGGGBBBBB */ - - /* Red is the top 5 bits of a 16 bit color value */ - byte r = 0; - /* Green is the middle 6 bits */ - byte g = 0; - /* Blue is the bottom 5 bits */ - byte b = 0; - - byte q = value / 32; - - if (q == 0) - { - b = 31; - g = 2 * (value % 32); - r = 0; - } - else if (q == 1) - { - b = 31 - (value % 32); - g = 63; - r = 0; - } - else if (q == 2) - { - b = 0; - g = 63; - r = value % 32; - } - else if (q == 3) - { - b = 0; - g = 63 - 2 * (value % 32); - r = 31; - } - return (r << 11) + (g << 5) + b; -} -/**********************************************************************************************************************/ -int BrbDisplayBase_DrawBarGraph(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, int16_t tube_h, double value, double min, double max) -{ - static int tube_h_old = 0; - static double tube_h_max = 0; - - int tune_diff; - int tube_h_n; - - int tube_w = 21; - - // if (pos_y > 0) - // { - // tube_w = 22; - // } - - int tube_r = tube_w / 2; - int color = ILI9341_RED; - - if (value < 0) - { - color = ILI9341_SLATEBLUE; - value = value * -1; - max = min < 0 ? (min * -1) : min; - } - - pos_x = pos_x + tube_w; - pos_y = pos_y + tube_w; - - if (display_base->screen_cur != display_base->screen_last) - { - display_base->tft->fillCircle(pos_x, pos_y, (tube_w / 2), ILI9341_BLACK); - display_base->tft->fillRect((pos_x - (tube_w / 2)), pos_y, tube_w, tube_h, ILI9341_BLACK); - display_base->tft->fillCircle(pos_x, (tube_h + pos_y) + 7, ((tube_w / 2) + 10), ILI9341_BLACK); - - display_base->tft->fillCircle(pos_x, pos_y, (((tube_w - 6) / 2)), ILI9341_WHITESMOKE); - display_base->tft->fillRect((pos_x - (tube_w / 2) + 3), pos_y, (tube_w - 6), tube_h, ILI9341_WHITESMOKE); - display_base->tft->fillCircle(pos_x, (tube_h + pos_y) + 7, ((tube_w / 2) + 7), ILI9341_WHITESMOKE); - - tube_h_old = 0; - } - - // tune_diff = tube_h_max - max; // only draw new part of bar graph for faster display - - // display_base->tft->fillRect((pos_x - (tube_w / 2) + 5), pos_y, (tube_w - 10), tube_h, color); - display_base->tft->fillCircle(pos_x, (tube_h + pos_y) + 7, ((tube_w / 2) + 5), color); - - tube_h_n = map(value, 0, max, 0, (tube_h - tube_r)); - - tune_diff = tube_h_old - tube_h_n; // only draw new part of bar graph for faster display - - if (tune_diff != 0) - { - display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); - display_base->tft->setTextScale(1); - display_base->tft->setTextColor(ILI9341_BLACK); - - int max_int = (int)(max - ((int)max % 25)); - - for (int i = 0; i <= max_int; i = i + 5) - { - int map_pct = 100.0 - map(i, 0, max_int, 0, 100); - double pct = (map_pct / 100.0); - - if (map_pct % 25 == 0) - { - display_base->tft->fillRect(pos_x + (tube_w / 2) + 1, (pos_y + (tube_h - tube_r) * pct), 5, 2, ILI9341_BLACK); - display_base->tft->cursorToXY(((pos_x + (tube_w / 2)) + 10), (pos_y + (tube_h - tube_r) * pct) - 5); - // display_base->tft->cursorToXY(((pos_x + tube_w) + 8), (pos_y - 5)); - display_base->tft->print(i); - // display_base->tft->setTextSize(2); - display_base->tft->print((char)247); - } - // else if (((int)(pct * 100) % 50) == 0) - // { - // display_base->tft->fillRect(pos_x + (tube_w / 2) + 1, (pos_y + (tube_h - tube_r) * pct), 3, 2, ILI9341_BLACK); - // } - else - { - display_base->tft->fillRect(pos_x + (tube_w / 2) + 1, (pos_y + (tube_h - tube_r) * pct), 3, 1, ILI9341_BLACK); - } - } - - display_base->tft->fillRect((pos_x - (tube_w / 2) + 5), pos_y + (tube_h - tube_h_n), (tube_w - 10), tube_h_n, color); - - display_base->tft->fillRect(pos_x + (tube_w / 2) + 5, pos_y + (tube_h - tube_h_n), 30, 1, color); - display_base->tft->cursorToXY(pos_x + (tube_w / 2) + 10, pos_y + (tube_h - tube_h_n) + 3); - display_base->tft->setTextColor(color); - display_base->tft->print(value, 1); - } - - // display_base->tft->fillRect(pos_x, (pos_y + (tube_h - tube_r) * tube_h_n), 300, 6, ILI9341_SALMON); - - // display_base->tft->fillRect((pos_x - (tube_w / 2) + 5), pos_y, (tube_w - 10), ((tube_h - value) - ((tube_w / 2) + 7)), ILI9341_WHITE); - - if (value > max) - { - display_base->tft->fillCircle(pos_x, pos_y, (tube_w / 2) - 5, color); - } - - // remember how high bar is - tube_h_old = tube_h_n; - - // display_base->tft->fillCircle(pos_x, (tube_h + pos_y), ((tube_w / 2) + 5), color); - - return 0; -} +/* + * BrbDisplayDraw.cpp + * + * Created on: 2019-02-18 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbDisplayBase.h" + +static unsigned int color_lt(unsigned int color, float pct); +/**********************************************************************************************************************/ +int BrbDisplayBase_DrawBtn(BrbDisplayBase *display_base, int btn_x, int btn_y, int btn_w, int btn_h, const char *text_ptr, int btn_color, int txt_color) +{ + display_base->tft->fillRect(btn_x, btn_y, btn_w, btn_h, btn_color); + display_base->tft->setTextColor(txt_color, btn_color); + display_base->tft->printAtPivoted((const __FlashStringHelper *)text_ptr, (btn_w / 2) + btn_x, (btn_h / 2) + btn_y, gTextPivotMiddleCenter); + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_DrawArcText(BrbDisplayBase *display_base, double value, int x, int y, int r, const char *units, int text_color) +{ + // Convert value to a string + char buf[10] = {0}; + byte len = 4; + + if (value > 999) + len = 5; + + dtostrf(value, len, 1, buf); + + // Set the text color to default + display_base->tft->setTextColor(ILI9341_BLACK, ILI9341_WHITE); + display_base->tft->setTextColor(text_color, ILI9341_WHITE); + + display_base->tft->setFont(DISPLAY_FONT_ARC_VALUE); + + /* Check size and spacing */ + if (r > 130) + { + display_base->tft->setTextScale(2); + display_base->tft->printAtPivoted(buf, x, y - 30, gTextPivotMiddleCenter); + } + else if (r > 84) + { + display_base->tft->setTextScale(1); + display_base->tft->printAtPivoted(buf, x, y - 25, gTextPivotMiddleCenter); + } + else if (r > 50) + { + display_base->tft->setTextScale(1); + display_base->tft->printAtPivoted(buf, x, y - 15, gTextPivotMiddleCenter); + } + else + { + display_base->tft->setFont(DISPLAY_FONT_ARC_SUB); + display_base->tft->setTextScale(2); + display_base->tft->printAtPivoted(buf, x, y - 10, gTextPivotMiddleCenter); + } + + if (units) + { + display_base->tft->setFont(DISPLAY_FONT_ARC_SUB); + + if (r > 130) + { + display_base->tft->setTextScale(3); + display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 15, gTextPivotMiddleCenter); + } + else if (r > 84) + { + display_base->tft->setTextScale(2); + display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 15, gTextPivotMiddleCenter); + } + else if (r > 50) + { + display_base->tft->setTextScale(1); + display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 12, gTextPivotMiddleCenter); + } + else + { + display_base->tft->setTextScale(1); + display_base->tft->printAtPivoted((const __FlashStringHelper *)units, x, y + 5, gTextPivotMiddleCenter); + } + } + + return 0; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_DrawArc(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme) +{ + return BrbDisplayBase_DrawArcSeg(display_base, value, vmin, vmax, x, y, r, units, scheme, 0, ARC_SEG, ARC_INC); +} +/**********************************************************************************************************************/ +int BrbDisplayBase_DrawArcSeg(BrbDisplayBase *display_base, double value, int vmin, int vmax, int x, int y, int r, const char *units, byte scheme, int tick, int seg, int inc) +{ + /* Calculate coords of centre of ring */ + x += r; + y += r; + + /* Width of outer ring is 1/x of radius */ + int w = r / 6; + + int angle = 95; // Half the sweep angle of meter (300 degrees) + + int text_color = ILI9341_BLACK; // To hold the text color + + int v = map(value, vmin, vmax, -angle, angle); // Map the value to an angle v + + int tl; + int i; + float sx; + float sy; + uint16_t x0; + uint16_t y0; + uint16_t x1; + uint16_t y1; + float sx2; + float sy2; + int x2; + int y2; + int x3; + int y3; + + display_base->tft->fillRect(x - r, y - r, r * 2, (r * 1), ILI9341_WHITE); + + // Draw color blocks every inc degrees + for (i = -angle; i < angle; i += inc) + { + // Choose color from scheme + int color_cur = 0; + switch (scheme) + { + case DISPLAY_ARC_RED2RED: + color_cur = ILI9341_RED; + break; // Fixed color + case DISPLAY_ARC_GREEN2GREEN: + color_cur = ILI9341_GREEN; + break; // Fixed color + case DISPLAY_ARC_BLUE2BLUE: + color_cur = ILI9341_BLUE; + break; // Fixed color + case DISPLAY_ARC_BLUE2RED: + color_cur = BrbDisplayBase_Rainbow(map(i, -angle, angle, 0, 127)); + break; // Full spectrum blue to red + case DISPLAY_ARC_GREEN2RED: + color_cur = BrbDisplayBase_Rainbow(map(i, -angle, angle, 63, 127)); + color_cur = color_lt(color_cur, 0.9); + break; // Green to red (high temperature etc) + case DISPLAY_ARC_RED2GREEN: + color_cur = BrbDisplayBase_Rainbow(map(i, -angle, angle, 127, 63)); + color_cur = color_lt(color_cur, 0.9); + break; // Red to green (low battery etc) + default: + color_cur = ILI9341_BLUE; + break; // Fixed color + } + + // Calculate pair of coordinates for segment start + sx = cos((i - 90) * 0.0174532925); + sy = sin((i - 90) * 0.0174532925); + x0 = sx * (r - w) + x; + y0 = sy * (r - w) + y; + x1 = sx * r + x; + y1 = sy * r + y; + + // Calculate pair of coordinates for segment end + sx2 = cos((i + seg - 90) * 0.0174532925); + sy2 = sin((i + seg - 90) * 0.0174532925); + x2 = sx2 * (r - w) + x; + y2 = sy2 * (r - w) + y; + x3 = sx2 * r + x; + y3 = sy2 * r + y; + + // Fill in colored segments with 2 triangles + if (i < v) + { + display_base->tft->fillTriangle(x0, y0, x1, y1, x2, y2, color_cur); + display_base->tft->fillTriangle(x1, y1, x2, y2, x3, y3, color_cur); + // Save the last color drawn + text_color = color_cur; + } + else // Fill in blank segments + { + display_base->tft->fillTriangle(x0, y0, x1, y1, x2, y2, ILI9341_LIGHTGREY); + display_base->tft->fillTriangle(x1, y1, x2, y2, x3, y3, ILI9341_LIGHTGREY); + } + + if (tick > 0) + { + /* Short scale tick length */ + if (i % 25 != 0) + tl = tick; + else + tl = tick + 3; + + // Recalculate coords in case tick length changed + x0 = sx * (r + tl) + x; + y0 = sy * (r + tl) + y; + x1 = sx * (r + 2) + x; + y1 = sy * (r + 2) + y; + + // Draw tick + display_base->tft->drawLine(x0, y0, x1, y1, ILI9341_BLACK); + } + + // // Check if labels should be drawn, with position tweaks + // if (i % 25 == 0) + // { + // display_base->tft->setTextColor(ILI9341_BLACK, ILI9341_WHITE); + // // Calculate label positions + // // x0 = sx * (r + tl) + x; + // // y0 = sy * (r + tl) + y; + // switch (i / 25) + // { + // case -2: + // display_base->tft->printAtPivoted("0", x0, y0 - 12, gTextPivotMiddleCenter); + // break; + // case -1: + // display_base->tft->printAtPivoted("25", x0, y0 - 9, gTextPivotMiddleCenter); + // break; + // case 0: + // display_base->tft->printAtPivoted("50", x0, y0 - 6, gTextPivotMiddleCenter); + // break; + // case 1: + // display_base->tft->printAtPivoted("75", x0, y0 - 9, gTextPivotMiddleCenter); + // break; + // case 2: + // display_base->tft->printAtPivoted("100", x0, y0 - 12, gTextPivotMiddleCenter); + // break; + // } + // } + } + + if (tick > 0) + { + // Draw scale arc, don't draw the last part + sx = cos((i - 90) * 0.0174532925); + sy = sin((i - 90) * 0.0174532925); + x0 = sx * (r + tl) + x; + y0 = sy * (r + tl) + y; + x1 = sx * (r + 2) + x; + y1 = sy * (r + 2) + y; + + display_base->tft->drawLine(x0, y0, x1, y1, ILI9341_BLACK); + } + + BrbDisplayBase_DrawArcText(display_base, value, x, y, r, units, text_color); + + display_base->tft->setTextColor(ILI9341_BLACK, ILI9341_WHITE); + display_base->tft->setFont(DISPLAY_FONT_DEFAULT); + display_base->tft->setTextScale(1); + display_base->tft->cursorToXY(x - r, y + 10); + display_base->tft->println(vmin); + + display_base->tft->cursorToXY(x + r - (vmax > 99 ? 20 : 15), y + 10); + display_base->tft->println(vmax); + + // Calculate and return right hand side x coordinate + return x + r; +} +/**********************************************************************************************************************/ +static unsigned int color_lt(unsigned int color, float pct) +{ + byte r = (color >> 8) & 0x00F8; + byte g = (color >> 3) & 0x00FC; + byte b = (color << 3) & 0x00F8; + + r = min(max(0, r * pct), 255); + g = min(max(0, g * pct), 255); + b = min(max(0, b * pct), 255); + + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); + // return (r << 11) + (g << 5) + b; +} +/**********************************************************************************************************************/ +/* Return a 16 bit rainbow color */ +/**********************************************************************************************************************/ +unsigned int BrbDisplayBase_Rainbow(byte value) +{ + /* Value is expected to be in range 0-127 */ + + /* The value is converted to a spectrum color from 0 = blue through to 127 = red */ + + /* RRRRRGGGGGGBBBBB */ + + /* Red is the top 5 bits of a 16 bit color value */ + byte r = 0; + /* Green is the middle 6 bits */ + byte g = 0; + /* Blue is the bottom 5 bits */ + byte b = 0; + + byte q = value / 32; + + if (q == 0) + { + b = 31; + g = 2 * (value % 32); + r = 0; + } + else if (q == 1) + { + b = 31 - (value % 32); + g = 63; + r = 0; + } + else if (q == 2) + { + b = 0; + g = 63; + r = value % 32; + } + else if (q == 3) + { + b = 0; + g = 63 - 2 * (value % 32); + r = 31; + } + return (r << 11) + (g << 5) + b; +} +/**********************************************************************************************************************/ +int BrbDisplayBase_DrawBarGraph(BrbDisplayBase *display_base, int16_t pos_x, int16_t pos_y, int16_t tube_h, double value, double min, double max) +{ + static int tube_h_old = 0; + static double tube_h_max = 0; + + int tune_diff; + int tube_h_n; + + int tube_w = 21; + + // if (pos_y > 0) + // { + // tube_w = 22; + // } + + int tube_r = tube_w / 2; + int color = ILI9341_RED; + + if (value < 0) + { + color = ILI9341_SLATEBLUE; + value = value * -1; + max = min < 0 ? (min * -1) : min; + } + + pos_x = pos_x + tube_w; + pos_y = pos_y + tube_w; + + if (display_base->screen_cur != display_base->screen_last) + { + display_base->tft->fillCircle(pos_x, pos_y, (tube_w / 2), ILI9341_BLACK); + display_base->tft->fillRect((pos_x - (tube_w / 2)), pos_y, tube_w, tube_h, ILI9341_BLACK); + display_base->tft->fillCircle(pos_x, (tube_h + pos_y) + 7, ((tube_w / 2) + 10), ILI9341_BLACK); + + display_base->tft->fillCircle(pos_x, pos_y, (((tube_w - 6) / 2)), ILI9341_WHITESMOKE); + display_base->tft->fillRect((pos_x - (tube_w / 2) + 3), pos_y, (tube_w - 6), tube_h, ILI9341_WHITESMOKE); + display_base->tft->fillCircle(pos_x, (tube_h + pos_y) + 7, ((tube_w / 2) + 7), ILI9341_WHITESMOKE); + + tube_h_old = 0; + } + + // tune_diff = tube_h_max - max; // only draw new part of bar graph for faster display + + // display_base->tft->fillRect((pos_x - (tube_w / 2) + 5), pos_y, (tube_w - 10), tube_h, color); + display_base->tft->fillCircle(pos_x, (tube_h + pos_y) + 7, ((tube_w / 2) + 5), color); + + tube_h_n = map(value, 0, max, 0, (tube_h - tube_r)); + + tune_diff = tube_h_old - tube_h_n; // only draw new part of bar graph for faster display + + if (tune_diff != 0) + { + display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); + display_base->tft->setTextScale(1); + display_base->tft->setTextColor(ILI9341_BLACK); + + int max_int = (int)(max - ((int)max % 25)); + + for (int i = 0; i <= max_int; i = i + 5) + { + int map_pct = 100.0 - map(i, 0, max_int, 0, 100); + double pct = (map_pct / 100.0); + + if (map_pct % 25 == 0) + { + display_base->tft->fillRect(pos_x + (tube_w / 2) + 1, (pos_y + (tube_h - tube_r) * pct), 5, 2, ILI9341_BLACK); + display_base->tft->cursorToXY(((pos_x + (tube_w / 2)) + 10), (pos_y + (tube_h - tube_r) * pct) - 5); + // display_base->tft->cursorToXY(((pos_x + tube_w) + 8), (pos_y - 5)); + display_base->tft->print(i); + // display_base->tft->setTextSize(2); + display_base->tft->print((char)247); + } + // else if (((int)(pct * 100) % 50) == 0) + // { + // display_base->tft->fillRect(pos_x + (tube_w / 2) + 1, (pos_y + (tube_h - tube_r) * pct), 3, 2, ILI9341_BLACK); + // } + else + { + display_base->tft->fillRect(pos_x + (tube_w / 2) + 1, (pos_y + (tube_h - tube_r) * pct), 3, 1, ILI9341_BLACK); + } + } + + display_base->tft->fillRect((pos_x - (tube_w / 2) + 5), pos_y + (tube_h - tube_h_n), (tube_w - 10), tube_h_n, color); + + display_base->tft->fillRect(pos_x + (tube_w / 2) + 5, pos_y + (tube_h - tube_h_n), 30, 1, color); + display_base->tft->cursorToXY(pos_x + (tube_w / 2) + 10, pos_y + (tube_h - tube_h_n) + 3); + display_base->tft->setTextColor(color); + display_base->tft->print(value, 1); + } + + // display_base->tft->fillRect(pos_x, (pos_y + (tube_h - tube_r) * tube_h_n), 300, 6, ILI9341_SALMON); + + // display_base->tft->fillRect((pos_x - (tube_w / 2) + 5), pos_y, (tube_w - 10), ((tube_h - value) - ((tube_w / 2) + 7)), ILI9341_WHITE); + + if (value > max) + { + display_base->tft->fillCircle(pos_x, pos_y, (tube_w / 2) - 5, color); + } + + // remember how high bar is + tube_h_old = tube_h_n; + + // display_base->tft->fillCircle(pos_x, (tube_h + pos_y), ((tube_w / 2) + 5), color); + + return 0; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbDisplayBase/brbyte_white.h b/lib/BrbDisplayBase/brbyte_white.h index 254fc15..8ea6d28 100644 --- a/lib/BrbDisplayBase/brbyte_white.h +++ b/lib/BrbDisplayBase/brbyte_white.h @@ -1,44 +1,44 @@ -#if defined(ARDUINO_ARCH_AVR) - #include -#elif defined(ARDUINO_SAM_DUE) - #define PROGMEM -#endif - -const uint16_t brbyte_whiteWidth = 120; -const uint16_t brbyte_whiteHeight = 35; -const uint16_t brbyte_white[4200] PROGMEM={ -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0xE77D,0xCF3B,0xBED9,0xCF1B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 0, 120 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0xE77C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 1, 240 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9E36,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 2, 360 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBD,0x9EB5,0x6E31,0x55CE,0x356B,0x2D4A,0x1D29,0x1508,0x1508,0x2529,0x3D8C,0x5DEF,0x96B5,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 3, 480 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x7631,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x0CE7,0x9694,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85D4,0x85D4,0x85D4,0x8DF4,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0xB6B8,0xA656,0x8E15,0x8DF4,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 4, 600 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x1508,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x96B5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 5, 720 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9ED6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x1508,0x2529,0x1D29,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x1508,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x85D4,0xEF9D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE77D,0x85D4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 6, 840 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x356B,0x04C6,0x04C6,0x04C6,0x356B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD77B,0x6610,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0xE7BD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE97,0x85D4,0x85D4,0x85D4,0xA656,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB698,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 7, 960 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF5A,0x04C6,0x04C6,0x04C6,0x04C6,0x9EB5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2D4A,0x04C6,0x04C6,0x04C6,0x04C6,0xEFDE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85F4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x8DF4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 8, 1080 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x5DEF,0x04C6,0x04C6,0x04C6,0x1508,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x45AD,0x04C6,0x04C6,0x04C6,0x2529,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF5A,0x9694,0x6610,0x4DAD,0x3D8C,0x356B,0x4DAD,0x6E31,0xA6D6,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x9615,0xEF9D,0xC6FA,0xA677,0x9E56,0xA657,0xBED9,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0xD73B,0xD73B,0xD73B,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0xD73B,0xD73B,0xD73B,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85F4,0xCF1B,0xD73B,0xD73B,0xD73B,0xD73B,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0xBED9,0xA677,0x9E36,0x9E36,0xA677,0xC6FA,0xF7DF,0xFFFF, // row 9, 1200 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFDE,0x0CE7,0x04C6,0x04C6,0x04C6,0x7631,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x1508,0x04C6,0x04C6,0x04C6,0x7E52,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF9C,0x55CE,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x45AD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0x8DF4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xCF1B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x85F4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9615,0xF7BE, // row 10, 1320 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8E94,0x04C6,0x04C6,0x04C6,0x04C6,0xDF9C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8673,0x04C6,0x04C6,0x04C6,0x1508,0xEFDE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x6E31,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0xCF5A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85D4,0x85D4,0x85D4,0x85D4,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x85F4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xAE97, // row 11, 1440 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2529,0x04C6,0x04C6,0x04C6,0x45AD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7FF,0x7652,0x04C6,0x04C6,0x04C6,0x04C6,0xB718,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x55CE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA677,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE77,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8E15,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0x8DF4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0x9E36,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4, // row 12, 1560 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB718,0x04C6,0x04C6,0x04C6,0x04C6,0x7E73,0xC75A,0xC75A,0xC75A,0xBF39,0xA6D6,0x6E31,0x1508,0x04C6,0x04C6,0x04C6,0x0CE7,0xA6D6,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x96B5,0x04C6,0x04C6,0x04C6,0x0CE7,0xBF39,0xE7BD,0xF7DE,0xEFDE,0xD77B,0x96B5,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0x85F4,0x85D4,0x85D4,0x85D4,0x9635,0xCF1A,0xF7BE,0xFFFF,0xFFDF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x9635,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0x85D4,0x85D4,0x85D4,0x85D4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0x85F4,0x85D4,0x85D4,0x85D4,0xC6FA,0xD75C,0xD75C,0xD75C,0xD75C,0xD75C,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0x85F4,0x85D4,0x85D4,0x85D4,0x9E56,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xC6F9,0x85D4,0x85D4,0x85D4,0x85D4, // row 13, 1680 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x4DCE,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x4DAD,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2D4A,0x04C6,0x04C6,0x04C6,0x6E31,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9635,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA657,0x85D4,0x85D4,0x85D4,0x8DF4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x85D4,0x85D4,0x85D4,0x85F4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0xBED9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9615,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x8DF4,0x85D4,0x85D4,0x85D4,0xBEB9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x8DF4, // row 14, 1800 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79C,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x5DEF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC739,0x04C6,0x04C6,0x04C6,0x04C6,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8DF5,0x85D4,0x85D4,0x85D4,0xC6FA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9615,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x9615,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x9615,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0xC6FA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xB6B9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0xAE77, // row 15, 1920 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x7E52,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x4DAD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x55EF,0x04C6,0x04C6,0x04C6,0x3D8C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x85D4,0x85D4,0x85D4,0x8DF4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE98,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9E36,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x8DF4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x8DF4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE77D,0x8DF4,0x85D4,0x85D4,0x85D4,0xDF5C, // row 16, 2040 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x1508,0x04C6,0x04C6,0x04C6,0x45AD,0x9EB5,0x9EB5,0x9EB5,0x9EB5,0x96B5,0x7652,0x2D4A,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x9ED6,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE7BD,0x04E7,0x04C6,0x04C6,0x04C6,0xA6F7,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E56,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB698,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA656,0x85D4,0x85D4,0x85D4,0xB698,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x8DF4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0xB6B8,0x8DF4,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF, // row 17, 2160 pixels -0xFFFF,0xFFFF,0xFFFF,0xA6F7,0x04C6,0x04C6,0x04C6,0x04C6,0xC739,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x6610,0x04C6,0x04C6,0x04C6,0x04C6,0x55CE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8673,0x04C6,0x04C6,0x04C6,0x1508,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85D4,0x85D4,0x85D4,0x85D4,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xAE97,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x85D4,0x85D4,0x85D4,0x85D4,0xE77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9615,0xC6FA,0xBED9,0xB6B8,0xA657,0x8DF4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xAE77,0xFFFF,0xFFFF, // row 18, 2280 pixels -0xFFFF,0xFFFF,0xFFFF,0x3D8C,0x04C6,0x04C6,0x04C6,0x2D6B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF9C,0x04C6,0x04C6,0x04C6,0x04C6,0x45AD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x1D29,0x04C6,0x04C6,0x04C6,0x7E52,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x8DF5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9E36,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xC71A,0xFFFF,0xFFFF,0xFFFF, // row 19, 2400 pixels -0xFFFF,0xFFFF,0xD77B,0x04C6,0x04C6,0x04C6,0x04C6,0x96B5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE7BD,0x04C6,0x04C6,0x04C6,0x04C6,0x6610,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAEF7,0x04C6,0x04C6,0x04C6,0x04C6,0xE79C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF3B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x8E15,0x85D4,0x85D4,0x85D4,0xBED9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB698,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0xA656,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF1B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0x9E56,0xC6FA,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 20, 2520 pixels -0xFFFF,0xFFFF,0x6E10,0x04C6,0x04C6,0x04C6,0x0CE7,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAEF7,0x04C6,0x04C6,0x04C6,0x04C6,0xA6F7,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x45AD,0x04C6,0x04C6,0x04C6,0x4DCE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85D4,0x85D4,0x85D4,0x8DF5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x8DF4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xBEB9,0xFFFF,0xE77D,0x85F4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x85D4,0x85D4,0x85D4,0x8DF4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC71A,0x85D4,0x85D4,0x85D4,0x8DF4,0xA656,0xA677,0xAE98,0xBED9,0xCF1A,0xDF5C,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 21, 2640 pixels -0xFFFF,0xF7DE,0x0CE7,0x04C6,0x04C6,0x04C6,0x6E31,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x356B,0x04C6,0x04C6,0x04C6,0x1508,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF9C,0x04C6,0x04C6,0x04C6,0x04C6,0xB718,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xBED9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1B,0x85D4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xBED9,0xF7DF,0x9635,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA677,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xAE77,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 22, 2760 pixels -0xFFFF,0x96B5,0x04C6,0x04C6,0x04C6,0x04C6,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x5DEF,0x04C6,0x04C6,0x04C6,0x04C6,0x8673,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x6E31,0x04C6,0x04C6,0x04C6,0x2529,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x85F4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85F4,0x85D4,0x85D4,0x85D4,0xAE77,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xB6B8,0xAE97,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE77,0x85D4,0x85D4,0x85D4,0xAE97,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 23, 2880 pixels -0xFFFF,0x2D4A,0x04C6,0x04C6,0x04C6,0x458C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0xA6D6,0x2D4A,0x04C6,0x04C6,0x04C6,0x04C6,0x356B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x1508,0x04C6,0x04C6,0x04C6,0x8E94,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE97,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0xAE97,0x85D4,0x85D4,0x85D4,0x85D4,0x9E36,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x8DF5,0x85D4,0x85D4,0x85D4,0x9635,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x85D4,0x85D4,0x85D4,0x85D4,0xC6FA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE98,0x85D4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 24, 3000 pixels -0xC739,0x04C6,0x04C6,0x04C6,0x04C6,0x2D4A,0x6610,0x7631,0x7652,0x6E31,0x5DEF,0x3D8C,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x2D4A,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9EB5,0x04C6,0x04C6,0x04C6,0x0CE7,0xEFDE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85F4,0x85D4,0x85D4,0x85D4,0xAE98,0xD75C,0xD75C,0xCF1A,0xAE77,0x85F4,0x85D4,0x85D4,0x85D4,0x85D4,0x9E56,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xEF9D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xBED9,0xD73B,0xCF3B,0xBED9,0x9E36,0xD75C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x8E15,0xBED9,0xD73B,0xDF5C,0xD73B,0xC6F9,0xA677,0x8DF4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 25, 3120 pixels -0x55EF,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x55EF,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x356B,0x04C6,0x04C6,0x04C6,0x5DEF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6F9,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xB698,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0xD75B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xE77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0x85F4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 26, 3240 pixels -0x04E7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x3D8C,0xBF18,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC75A,0x04C6,0x04C6,0x04C6,0x04C6,0xCF5A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9635,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xC6F9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 27, 3360 pixels -0x3D8C,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x0CE7,0x45AD,0x8673,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x5DEF,0x04C6,0x04C6,0x04C6,0x356B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6F9,0x9635,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xA677,0xD75B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0x85D4,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBD,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xB698,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9635,0xBED9,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 28, 3480 pixels -0xFFFF,0xFFFF,0xF7DE,0xD77B,0xC75A,0xBF39,0xB718,0xB718,0xBF39,0xCF5A,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0xDF5C,0xCF1A,0xC6FA,0xC71A,0xD73B,0xE77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x9E36,0x85D4,0x85D4,0x85D4,0xA657,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0xCF3B,0xC71A,0xCF1A,0xD73B,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE77C,0xCF1A,0xC6FA,0xC6FA,0xCF1A,0xDF5C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 29, 3600 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x9635,0x85D4,0x85D4,0x85D4,0x9E36,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 30, 3720 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0xFFDF,0xFFFF,0xFFFF,0xEFBE,0xBED9,0x8DF4,0x85D4,0x85D4,0x85D4,0x9E56,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 31, 3840 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85F4,0x9615,0x8E15,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xA677,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 32, 3960 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xC6F9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 33, 4080 pixels -0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1B,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xA677,0xEF9D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}; // row 34, 4200 pixels +#if defined(ARDUINO_ARCH_AVR) + #include +#elif defined(ARDUINO_SAM_DUE) + #define PROGMEM +#endif + +const uint16_t brbyte_whiteWidth = 120; +const uint16_t brbyte_whiteHeight = 35; +const uint16_t brbyte_white[4200] PROGMEM={ +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0xE77D,0xCF3B,0xBED9,0xCF1B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 0, 120 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0xE77C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 1, 240 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9E36,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 2, 360 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBD,0x9EB5,0x6E31,0x55CE,0x356B,0x2D4A,0x1D29,0x1508,0x1508,0x2529,0x3D8C,0x5DEF,0x96B5,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 3, 480 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x7631,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x0CE7,0x9694,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85D4,0x85D4,0x85D4,0x8DF4,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0xB6B8,0xA656,0x8E15,0x8DF4,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 4, 600 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x1508,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x96B5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 5, 720 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9ED6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x1508,0x2529,0x1D29,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x1508,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x85D4,0xEF9D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE77D,0x85D4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 6, 840 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x356B,0x04C6,0x04C6,0x04C6,0x356B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD77B,0x6610,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0xE7BD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE97,0x85D4,0x85D4,0x85D4,0xA656,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB698,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 7, 960 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF5A,0x04C6,0x04C6,0x04C6,0x04C6,0x9EB5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2D4A,0x04C6,0x04C6,0x04C6,0x04C6,0xEFDE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85F4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x8DF4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 8, 1080 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x5DEF,0x04C6,0x04C6,0x04C6,0x1508,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x45AD,0x04C6,0x04C6,0x04C6,0x2529,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF5A,0x9694,0x6610,0x4DAD,0x3D8C,0x356B,0x4DAD,0x6E31,0xA6D6,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x9615,0xEF9D,0xC6FA,0xA677,0x9E56,0xA657,0xBED9,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0xD73B,0xD73B,0xD73B,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0xD73B,0xD73B,0xD73B,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85F4,0xCF1B,0xD73B,0xD73B,0xD73B,0xD73B,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0xBED9,0xA677,0x9E36,0x9E36,0xA677,0xC6FA,0xF7DF,0xFFFF, // row 9, 1200 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFDE,0x0CE7,0x04C6,0x04C6,0x04C6,0x7631,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x1508,0x04C6,0x04C6,0x04C6,0x7E52,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF9C,0x55CE,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x45AD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0x8DF4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xCF1B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x85F4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9615,0xF7BE, // row 10, 1320 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8E94,0x04C6,0x04C6,0x04C6,0x04C6,0xDF9C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8673,0x04C6,0x04C6,0x04C6,0x1508,0xEFDE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x6E31,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0xCF5A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85D4,0x85D4,0x85D4,0x85D4,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x85F4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xAE97, // row 11, 1440 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2529,0x04C6,0x04C6,0x04C6,0x45AD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7FF,0x7652,0x04C6,0x04C6,0x04C6,0x04C6,0xB718,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x55CE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA677,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE77,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8E15,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0x8DF4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0x9E36,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4, // row 12, 1560 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB718,0x04C6,0x04C6,0x04C6,0x04C6,0x7E73,0xC75A,0xC75A,0xC75A,0xBF39,0xA6D6,0x6E31,0x1508,0x04C6,0x04C6,0x04C6,0x0CE7,0xA6D6,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x96B5,0x04C6,0x04C6,0x04C6,0x0CE7,0xBF39,0xE7BD,0xF7DE,0xEFDE,0xD77B,0x96B5,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0x85F4,0x85D4,0x85D4,0x85D4,0x9635,0xCF1A,0xF7BE,0xFFFF,0xFFDF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x9635,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0x85D4,0x85D4,0x85D4,0x85D4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0x85F4,0x85D4,0x85D4,0x85D4,0xC6FA,0xD75C,0xD75C,0xD75C,0xD75C,0xD75C,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0x85F4,0x85D4,0x85D4,0x85D4,0x9E56,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xC6F9,0x85D4,0x85D4,0x85D4,0x85D4, // row 13, 1680 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x4DCE,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x4DAD,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x2D4A,0x04C6,0x04C6,0x04C6,0x6E31,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9635,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA657,0x85D4,0x85D4,0x85D4,0x8DF4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x85D4,0x85D4,0x85D4,0x85F4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0xBED9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9615,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x8DF4,0x85D4,0x85D4,0x85D4,0xBEB9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x8DF4, // row 14, 1800 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79C,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x5DEF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC739,0x04C6,0x04C6,0x04C6,0x04C6,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8DF5,0x85D4,0x85D4,0x85D4,0xC6FA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9615,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x9615,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x9615,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0xC6FA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xB6B9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0xAE77, // row 15, 1920 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x7E52,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x4DAD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x55EF,0x04C6,0x04C6,0x04C6,0x3D8C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x85D4,0x85D4,0x85D4,0x8DF4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE98,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9E36,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x8DF4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x8DF4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE77D,0x8DF4,0x85D4,0x85D4,0x85D4,0xDF5C, // row 16, 2040 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x1508,0x04C6,0x04C6,0x04C6,0x45AD,0x9EB5,0x9EB5,0x9EB5,0x9EB5,0x96B5,0x7652,0x2D4A,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x9ED6,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE7BD,0x04E7,0x04C6,0x04C6,0x04C6,0xA6F7,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E56,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB698,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA656,0x85D4,0x85D4,0x85D4,0xB698,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x8DF4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0xB6B8,0x8DF4,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF, // row 17, 2160 pixels +0xFFFF,0xFFFF,0xFFFF,0xA6F7,0x04C6,0x04C6,0x04C6,0x04C6,0xC739,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x6610,0x04C6,0x04C6,0x04C6,0x04C6,0x55CE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8673,0x04C6,0x04C6,0x04C6,0x1508,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85D4,0x85D4,0x85D4,0x85D4,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xAE97,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x85D4,0x85D4,0x85D4,0x85D4,0xE77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x9615,0xC6FA,0xBED9,0xB6B8,0xA657,0x8DF4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xAE77,0xFFFF,0xFFFF, // row 18, 2280 pixels +0xFFFF,0xFFFF,0xFFFF,0x3D8C,0x04C6,0x04C6,0x04C6,0x2D6B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF9C,0x04C6,0x04C6,0x04C6,0x04C6,0x45AD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x1D29,0x04C6,0x04C6,0x04C6,0x7E52,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9E56,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x8DF5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x9E36,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xC71A,0xFFFF,0xFFFF,0xFFFF, // row 19, 2400 pixels +0xFFFF,0xFFFF,0xD77B,0x04C6,0x04C6,0x04C6,0x04C6,0x96B5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE7BD,0x04C6,0x04C6,0x04C6,0x04C6,0x6610,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAEF7,0x04C6,0x04C6,0x04C6,0x04C6,0xE79C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF3B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0x8E15,0x85D4,0x85D4,0x85D4,0xBED9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB698,0x85D4,0x85D4,0x85D4,0xB6B8,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0xA656,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF1B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0x9E56,0xC6FA,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 20, 2520 pixels +0xFFFF,0xFFFF,0x6E10,0x04C6,0x04C6,0x04C6,0x0CE7,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAEF7,0x04C6,0x04C6,0x04C6,0x04C6,0xA6F7,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x45AD,0x04C6,0x04C6,0x04C6,0x4DCE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85D4,0x85D4,0x85D4,0x8DF5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0x8DF4,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xBEB9,0xFFFF,0xE77D,0x85F4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x85D4,0x85D4,0x85D4,0x8DF4,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC71A,0x85D4,0x85D4,0x85D4,0x8DF4,0xA656,0xA677,0xAE98,0xBED9,0xCF1A,0xDF5C,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 21, 2640 pixels +0xFFFF,0xF7DE,0x0CE7,0x04C6,0x04C6,0x04C6,0x6E31,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x356B,0x04C6,0x04C6,0x04C6,0x1508,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF9C,0x04C6,0x04C6,0x04C6,0x04C6,0xB718,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9635,0x85D4,0x85D4,0x85D4,0xBED9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1B,0x85D4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xBED9,0xF7DF,0x9635,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xA677,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xAE77,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 22, 2760 pixels +0xFFFF,0x96B5,0x04C6,0x04C6,0x04C6,0x04C6,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x5DEF,0x04C6,0x04C6,0x04C6,0x04C6,0x8673,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x6E31,0x04C6,0x04C6,0x04C6,0x2529,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x85F4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85F4,0x85D4,0x85D4,0x85D4,0xAE77,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xB6B8,0x85D4,0x85D4,0x85D4,0xB6B8,0xAE97,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8DF4,0x85D4,0x85D4,0x85D4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE77,0x85D4,0x85D4,0x85D4,0xAE97,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 23, 2880 pixels +0xFFFF,0x2D4A,0x04C6,0x04C6,0x04C6,0x458C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0xA6D6,0x2D4A,0x04C6,0x04C6,0x04C6,0x04C6,0x356B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x1508,0x04C6,0x04C6,0x04C6,0x8E94,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE97,0x85D4,0x85D4,0x85D4,0xA677,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0xAE97,0x85D4,0x85D4,0x85D4,0x85D4,0x9E36,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xBED9,0x85D4,0x85D4,0x85D4,0x8DF5,0x85D4,0x85D4,0x85D4,0x9635,0xFFDF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x85D4,0x85D4,0x85D4,0x85D4,0xC6FA,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xAE98,0x85D4,0x85D4,0x85D4,0x8DF4,0xEFBE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 24, 3000 pixels +0xC739,0x04C6,0x04C6,0x04C6,0x04C6,0x2D4A,0x6610,0x7631,0x7652,0x6E31,0x5DEF,0x3D8C,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x2D4A,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9EB5,0x04C6,0x04C6,0x04C6,0x0CE7,0xEFDE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7BE,0x85F4,0x85D4,0x85D4,0x85D4,0xAE98,0xD75C,0xD75C,0xCF1A,0xAE77,0x85F4,0x85D4,0x85D4,0x85D4,0x85D4,0x9E56,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xEF9D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xBED9,0xD73B,0xCF3B,0xBED9,0x9E36,0xD75C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x8E15,0xBED9,0xD73B,0xDF5C,0xD73B,0xC6F9,0xA677,0x8DF4,0xCF1A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 25, 3120 pixels +0x55EF,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x55EF,0xF7DE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x356B,0x04C6,0x04C6,0x04C6,0x5DEF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6F9,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xB698,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1A,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85F4,0xD75B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xE77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0x85F4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xD73B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 26, 3240 pixels +0x04E7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x3D8C,0xBF18,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC75A,0x04C6,0x04C6,0x04C6,0x04C6,0xCF5A,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9635,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD73B,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xC6F9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6FA,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xDF5C,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 27, 3360 pixels +0x3D8C,0x0CE7,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x04C6,0x0CE7,0x45AD,0x8673,0xD77B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x5DEF,0x04C6,0x04C6,0x04C6,0x356B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC6F9,0x9635,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xA677,0xD75B,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF5C,0x85D4,0x85D4,0x85D4,0x85D4,0xAE98,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBD,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xB698,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF3B,0x9615,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x9635,0xBED9,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 28, 3480 pixels +0xFFFF,0xFFFF,0xF7DE,0xD77B,0xC75A,0xBF39,0xB718,0xB718,0xBF39,0xCF5A,0xEFBD,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEFBE,0xDF5C,0xCF1A,0xC6FA,0xC71A,0xD73B,0xE77D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF7DE,0x9E36,0x85D4,0x85D4,0x85D4,0xA657,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE79D,0xCF3B,0xC71A,0xCF1A,0xD73B,0xE79D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE77C,0xCF1A,0xC6FA,0xC6FA,0xCF1A,0xDF5C,0xF7BE,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 29, 3600 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xEF9D,0x9635,0x85D4,0x85D4,0x85D4,0x9E36,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 30, 3720 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xD75C,0xFFDF,0xFFFF,0xFFFF,0xEFBE,0xBED9,0x8DF4,0x85D4,0x85D4,0x85D4,0x9E56,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 31, 3840 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xDF7C,0x85D4,0x85F4,0x9615,0x8E15,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xA677,0xF7DF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 32, 3960 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x9E36,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x8DF4,0xC6F9,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF, // row 33, 4080 pixels +0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF1B,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0x85D4,0xA677,0xEF9D,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF}; // row 34, 4200 pixels diff --git a/lib/BrbDisplayBase/fonts/Arial14.h b/lib/BrbDisplayBase/fonts/Arial14.h index 0b75575..014beb4 100644 --- a/lib/BrbDisplayBase/fonts/Arial14.h +++ b/lib/BrbDisplayBase/fonts/Arial14.h @@ -1,173 +1,173 @@ - - -/* - * - * Arial_14 - * - * created with FontCreator - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : Arial14.h - * Date : 02.05.2008 - * Font size in bytes : 7788 - * Font width : 10 - * Font height : 14 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef ARIAL_14_H -#define ARIAL_14_H - -#define ARIAL_14_WIDTH 10 -#define ARIAL_14_HEIGHT 14 - -/* - * added to allow fontname to match header file name. - * as well as keep the old name for backward compatibility - */ - -#define Arial14 Arial_14 - -static const uint8_t Arial_14[] PROGMEM = { - 0x1E, 0x6C, // size - 0x0A, // width - 0x0E, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x00, 0x01, 0x03, 0x08, 0x07, 0x0A, 0x08, 0x01, 0x03, 0x03, - 0x05, 0x07, 0x01, 0x04, 0x01, 0x04, 0x06, 0x03, 0x06, 0x06, - 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x01, 0x06, 0x06, - 0x06, 0x06, 0x0D, 0x09, 0x07, 0x08, 0x08, 0x07, 0x07, 0x09, - 0x07, 0x01, 0x05, 0x08, 0x07, 0x09, 0x07, 0x09, 0x07, 0x09, - 0x08, 0x07, 0x07, 0x07, 0x09, 0x0D, 0x08, 0x09, 0x08, 0x02, - 0x04, 0x02, 0x05, 0x08, 0x02, 0x06, 0x06, 0x05, 0x06, 0x06, - 0x04, 0x06, 0x06, 0x01, 0x02, 0x06, 0x01, 0x09, 0x06, 0x06, - 0x06, 0x06, 0x04, 0x05, 0x04, 0x06, 0x07, 0x09, 0x06, 0x07, - 0x06, 0x03, 0x01, 0x03, 0x07, 0x07, - - // font data - 0xFE, 0x14, // 33 - 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, // 34 - 0x90, 0x90, 0xF8, 0x96, 0x90, 0xF8, 0x96, 0x90, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 35 - 0x18, 0x24, 0x22, 0xFF, 0x42, 0x42, 0x84, 0x08, 0x10, 0x10, 0x3C, 0x10, 0x08, 0x04, // 36 - 0x1C, 0x22, 0x22, 0x1C, 0xC0, 0x30, 0x8C, 0x42, 0x40, 0x80, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x10, 0x10, 0x0C, // 37 - 0x80, 0x5C, 0x22, 0x62, 0x92, 0x0C, 0x80, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x08, 0x10, // 38 - 0x1E, 0x00, // 39 - 0xF0, 0x0C, 0x02, 0x1C, 0x60, 0x80, // 40 - 0x02, 0x0C, 0xF0, 0x80, 0x60, 0x1C, // 41 - 0x04, 0x14, 0x0E, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x40, 0x40, 0x40, 0xF8, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, // 43 - 0x00, 0x70, // 44 - 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x10, // 46 - 0x00, 0xC0, 0x38, 0x06, 0x18, 0x04, 0x00, 0x00, // 47 - 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 48 - 0x08, 0x04, 0xFE, 0x00, 0x00, 0x1C, // 49 - 0x0C, 0x02, 0x02, 0x82, 0x42, 0x3C, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 50 - 0x0C, 0x02, 0x22, 0x22, 0x22, 0xDC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 51 - 0x80, 0x40, 0x30, 0x08, 0x04, 0xFE, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x04, // 52 - 0x38, 0x16, 0x12, 0x12, 0x12, 0xE2, 0x0C, 0x10, 0x10, 0x10, 0x18, 0x04, // 53 - 0xF8, 0x44, 0x22, 0x22, 0x22, 0xC4, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 54 - 0x02, 0x02, 0x02, 0xE2, 0x1A, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 55 - 0xDC, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 56 - 0x3C, 0x42, 0x42, 0x42, 0x22, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, // 57 - 0x08, 0x10, // 58 - 0x08, 0x70, // 59 - 0x40, 0xA0, 0xA0, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x04, 0x04, 0x08, // 60 - 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0x08, 0x10, 0x10, 0xA0, 0xA0, 0x40, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, // 62 - 0x0C, 0x02, 0x82, 0x42, 0x22, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 63 - 0xE0, 0x18, 0x04, 0xC4, 0x22, 0x12, 0x12, 0x12, 0xA2, 0x72, 0x04, 0x08, 0xF0, 0x0C, 0x30, 0x40, 0x4C, 0x90, 0x90, 0x90, 0x88, 0x9C, 0x90, 0x50, 0x4C, 0x20, // 64 - 0x00, 0x80, 0xE0, 0x9C, 0x82, 0x9C, 0xE0, 0x80, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, // 65 - 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, // 66 - 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 67 - 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 68 - 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 69 - 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0xF8, 0x04, 0x02, 0x02, 0x02, 0x42, 0x42, 0x44, 0xC8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 71 - 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, // 72 - 0xFE, 0x1C, // 73 - 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0C, 0x10, 0x10, 0x10, 0x0C, // 74 - 0xFE, 0x80, 0x40, 0x20, 0x50, 0x88, 0x04, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, // 75 - 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 76 - 0xFE, 0x0C, 0x30, 0xC0, 0x00, 0xC0, 0x30, 0x0C, 0xFE, 0x1C, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x1C, // 77 - 0xFE, 0x04, 0x18, 0x60, 0x80, 0x00, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x08, 0x1C, // 78 - 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 79 - 0xFE, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x14, 0x08, 0x1C, 0x10, // 81 - 0xFE, 0x42, 0x42, 0x42, 0xC2, 0x42, 0x42, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, // 82 - 0x1C, 0x22, 0x22, 0x22, 0x42, 0x42, 0x8C, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, // 83 - 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 84 - 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x04, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, // 85 - 0x06, 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x00, // 86 - 0x06, 0x38, 0xC0, 0x00, 0xC0, 0x3C, 0x02, 0x3C, 0xC0, 0x00, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, // 87 - 0x02, 0x0C, 0x90, 0x60, 0x60, 0x90, 0x0C, 0x02, 0x10, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x10, // 88 - 0x02, 0x04, 0x18, 0x20, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, // 89 - 0x00, 0x02, 0x82, 0x42, 0x22, 0x1A, 0x06, 0x02, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, // 90 - 0xFE, 0x02, 0xFC, 0x80, // 91 - 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x18, // 92 - 0x02, 0xFE, 0x80, 0xFC, // 93 - 0x20, 0x1C, 0x02, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 - 0x02, 0x04, 0x00, 0x00, // 96 - 0x10, 0x88, 0x48, 0x48, 0x48, 0xF0, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 97 - 0xFE, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x08, 0x10, 0x10, 0x10, 0x0C, // 98 - 0xF0, 0x08, 0x08, 0x08, 0x10, 0x0C, 0x10, 0x10, 0x10, 0x08, // 99 - 0xF0, 0x08, 0x08, 0x08, 0x10, 0xFE, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 100 - 0xF0, 0x48, 0x48, 0x48, 0x48, 0x70, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x08, // 101 - 0x08, 0xFC, 0x0A, 0x0A, 0x00, 0x1C, 0x00, 0x00, // 102 - 0xF0, 0x08, 0x08, 0x08, 0x10, 0xF8, 0x4C, 0x90, 0x90, 0x90, 0x88, 0x7C, // 103 - 0xFE, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 104 - 0xFA, 0x1C, // 105 - 0x00, 0xFA, 0x80, 0x7C, // 106 - 0xFE, 0x80, 0x40, 0xA0, 0x10, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x10, // 107 - 0xFE, 0x1C, // 108 - 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x10, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 109 - 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 110 - 0xF0, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 111 - 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x0C, // 112 - 0xF0, 0x08, 0x08, 0x08, 0x10, 0xF8, 0x0C, 0x10, 0x10, 0x10, 0x08, 0xFC, // 113 - 0xF8, 0x10, 0x08, 0x08, 0x1C, 0x00, 0x00, 0x00, // 114 - 0x30, 0x48, 0x48, 0x48, 0x90, 0x08, 0x10, 0x10, 0x10, 0x0C, // 115 - 0x08, 0xFE, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x10, // 116 - 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 117 - 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, // 118 - 0x18, 0xE0, 0x00, 0xE0, 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x00, 0x04, 0x18, 0x04, 0x00, 0x04, 0x18, 0x04, 0x00, // 119 - 0x08, 0x30, 0xC0, 0xC0, 0x30, 0x08, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x10, // 120 - 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x00, 0x80, 0x8C, 0x70, 0x0C, 0x00, 0x00, // 121 - 0x08, 0x08, 0x88, 0x68, 0x18, 0x08, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 122 - 0x80, 0x7C, 0x02, 0x00, 0x7C, 0x80, // 123 - 0xFE, 0xFC, // 124 - 0x02, 0x7C, 0x80, 0x80, 0x7C, 0x00, // 125 - 0x40, 0x20, 0x20, 0x60, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 - 0xFC, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFC, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1C // 127 - -}; - -#endif + + +/* + * + * Arial_14 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Arial14.h + * Date : 02.05.2008 + * Font size in bytes : 7788 + * Font width : 10 + * Font height : 14 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef ARIAL_14_H +#define ARIAL_14_H + +#define ARIAL_14_WIDTH 10 +#define ARIAL_14_HEIGHT 14 + +/* + * added to allow fontname to match header file name. + * as well as keep the old name for backward compatibility + */ + +#define Arial14 Arial_14 + +static const uint8_t Arial_14[] PROGMEM = { + 0x1E, 0x6C, // size + 0x0A, // width + 0x0E, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x00, 0x01, 0x03, 0x08, 0x07, 0x0A, 0x08, 0x01, 0x03, 0x03, + 0x05, 0x07, 0x01, 0x04, 0x01, 0x04, 0x06, 0x03, 0x06, 0x06, + 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x01, 0x01, 0x06, 0x06, + 0x06, 0x06, 0x0D, 0x09, 0x07, 0x08, 0x08, 0x07, 0x07, 0x09, + 0x07, 0x01, 0x05, 0x08, 0x07, 0x09, 0x07, 0x09, 0x07, 0x09, + 0x08, 0x07, 0x07, 0x07, 0x09, 0x0D, 0x08, 0x09, 0x08, 0x02, + 0x04, 0x02, 0x05, 0x08, 0x02, 0x06, 0x06, 0x05, 0x06, 0x06, + 0x04, 0x06, 0x06, 0x01, 0x02, 0x06, 0x01, 0x09, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x05, 0x04, 0x06, 0x07, 0x09, 0x06, 0x07, + 0x06, 0x03, 0x01, 0x03, 0x07, 0x07, + + // font data + 0xFE, 0x14, // 33 + 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, // 34 + 0x90, 0x90, 0xF8, 0x96, 0x90, 0xF8, 0x96, 0x90, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 35 + 0x18, 0x24, 0x22, 0xFF, 0x42, 0x42, 0x84, 0x08, 0x10, 0x10, 0x3C, 0x10, 0x08, 0x04, // 36 + 0x1C, 0x22, 0x22, 0x1C, 0xC0, 0x30, 0x8C, 0x42, 0x40, 0x80, 0x00, 0x00, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x10, 0x10, 0x0C, // 37 + 0x80, 0x5C, 0x22, 0x62, 0x92, 0x0C, 0x80, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x08, 0x10, // 38 + 0x1E, 0x00, // 39 + 0xF0, 0x0C, 0x02, 0x1C, 0x60, 0x80, // 40 + 0x02, 0x0C, 0xF0, 0x80, 0x60, 0x1C, // 41 + 0x04, 0x14, 0x0E, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x40, 0x40, 0x40, 0xF8, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, // 43 + 0x00, 0x70, // 44 + 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x10, // 46 + 0x00, 0xC0, 0x38, 0x06, 0x18, 0x04, 0x00, 0x00, // 47 + 0xFC, 0x02, 0x02, 0x02, 0x02, 0xFC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 48 + 0x08, 0x04, 0xFE, 0x00, 0x00, 0x1C, // 49 + 0x0C, 0x02, 0x02, 0x82, 0x42, 0x3C, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 50 + 0x0C, 0x02, 0x22, 0x22, 0x22, 0xDC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 51 + 0x80, 0x40, 0x30, 0x08, 0x04, 0xFE, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1C, 0x04, // 52 + 0x38, 0x16, 0x12, 0x12, 0x12, 0xE2, 0x0C, 0x10, 0x10, 0x10, 0x18, 0x04, // 53 + 0xF8, 0x44, 0x22, 0x22, 0x22, 0xC4, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 54 + 0x02, 0x02, 0x02, 0xE2, 0x1A, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 55 + 0xDC, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 56 + 0x3C, 0x42, 0x42, 0x42, 0x22, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, // 57 + 0x08, 0x10, // 58 + 0x08, 0x70, // 59 + 0x40, 0xA0, 0xA0, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x04, 0x04, 0x08, // 60 + 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x08, 0x10, 0x10, 0xA0, 0xA0, 0x40, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, // 62 + 0x0C, 0x02, 0x82, 0x42, 0x22, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 63 + 0xE0, 0x18, 0x04, 0xC4, 0x22, 0x12, 0x12, 0x12, 0xA2, 0x72, 0x04, 0x08, 0xF0, 0x0C, 0x30, 0x40, 0x4C, 0x90, 0x90, 0x90, 0x88, 0x9C, 0x90, 0x50, 0x4C, 0x20, // 64 + 0x00, 0x80, 0xE0, 0x9C, 0x82, 0x9C, 0xE0, 0x80, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, // 65 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0xDC, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, // 66 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x04, 0x08, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 67 + 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 68 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 69 + 0xFE, 0x22, 0x22, 0x22, 0x22, 0x22, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x42, 0x42, 0x44, 0xC8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 71 + 0xFE, 0x20, 0x20, 0x20, 0x20, 0x20, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, // 72 + 0xFE, 0x1C, // 73 + 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0C, 0x10, 0x10, 0x10, 0x0C, // 74 + 0xFE, 0x80, 0x40, 0x20, 0x50, 0x88, 0x04, 0x02, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, // 75 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // 76 + 0xFE, 0x0C, 0x30, 0xC0, 0x00, 0xC0, 0x30, 0x0C, 0xFE, 0x1C, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x1C, // 77 + 0xFE, 0x04, 0x18, 0x60, 0x80, 0x00, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x04, 0x08, 0x1C, // 78 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x04, // 79 + 0xFE, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xF8, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0xF8, 0x04, 0x08, 0x10, 0x10, 0x10, 0x14, 0x08, 0x1C, 0x10, // 81 + 0xFE, 0x42, 0x42, 0x42, 0xC2, 0x42, 0x42, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x10, // 82 + 0x1C, 0x22, 0x22, 0x22, 0x42, 0x42, 0x8C, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, // 83 + 0x02, 0x02, 0x02, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, // 84 + 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x04, 0x08, 0x10, 0x10, 0x10, 0x08, 0x04, // 85 + 0x06, 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x06, 0x00, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x00, // 86 + 0x06, 0x38, 0xC0, 0x00, 0xC0, 0x3C, 0x02, 0x3C, 0xC0, 0x00, 0xC0, 0x38, 0x06, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, // 87 + 0x02, 0x0C, 0x90, 0x60, 0x60, 0x90, 0x0C, 0x02, 0x10, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x10, // 88 + 0x02, 0x04, 0x18, 0x20, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x02, 0x82, 0x42, 0x22, 0x1A, 0x06, 0x02, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, 0x10, 0x10, // 90 + 0xFE, 0x02, 0xFC, 0x80, // 91 + 0x06, 0x38, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x18, // 92 + 0x02, 0xFE, 0x80, 0xFC, // 93 + 0x20, 0x1C, 0x02, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 95 + 0x02, 0x04, 0x00, 0x00, // 96 + 0x10, 0x88, 0x48, 0x48, 0x48, 0xF0, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 97 + 0xFE, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x08, 0x10, 0x10, 0x10, 0x0C, // 98 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0x0C, 0x10, 0x10, 0x10, 0x08, // 99 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0xFE, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 100 + 0xF0, 0x48, 0x48, 0x48, 0x48, 0x70, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x08, // 101 + 0x08, 0xFC, 0x0A, 0x0A, 0x00, 0x1C, 0x00, 0x00, // 102 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0xF8, 0x4C, 0x90, 0x90, 0x90, 0x88, 0x7C, // 103 + 0xFE, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 104 + 0xFA, 0x1C, // 105 + 0x00, 0xFA, 0x80, 0x7C, // 106 + 0xFE, 0x80, 0x40, 0xA0, 0x10, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x10, // 107 + 0xFE, 0x1C, // 108 + 0xF8, 0x10, 0x08, 0x08, 0xF0, 0x10, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x1C, // 109 + 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, // 110 + 0xF0, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x0C, 0x10, 0x10, 0x10, 0x10, 0x0C, // 111 + 0xF8, 0x10, 0x08, 0x08, 0x08, 0xF0, 0xFC, 0x08, 0x10, 0x10, 0x10, 0x0C, // 112 + 0xF0, 0x08, 0x08, 0x08, 0x10, 0xF8, 0x0C, 0x10, 0x10, 0x10, 0x08, 0xFC, // 113 + 0xF8, 0x10, 0x08, 0x08, 0x1C, 0x00, 0x00, 0x00, // 114 + 0x30, 0x48, 0x48, 0x48, 0x90, 0x08, 0x10, 0x10, 0x10, 0x0C, // 115 + 0x08, 0xFE, 0x08, 0x08, 0x00, 0x1C, 0x10, 0x10, // 116 + 0xF8, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 0x10, 0x10, 0x10, 0x08, 0x1C, // 117 + 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00, 0x04, 0x18, 0x04, 0x00, 0x00, // 118 + 0x18, 0xE0, 0x00, 0xE0, 0x18, 0xE0, 0x00, 0xE0, 0x18, 0x00, 0x04, 0x18, 0x04, 0x00, 0x04, 0x18, 0x04, 0x00, // 119 + 0x08, 0x30, 0xC0, 0xC0, 0x30, 0x08, 0x10, 0x0C, 0x00, 0x00, 0x0C, 0x10, // 120 + 0x18, 0x60, 0x80, 0x00, 0x80, 0x60, 0x18, 0x00, 0x80, 0x8C, 0x70, 0x0C, 0x00, 0x00, // 121 + 0x08, 0x08, 0x88, 0x68, 0x18, 0x08, 0x10, 0x18, 0x14, 0x10, 0x10, 0x10, // 122 + 0x80, 0x7C, 0x02, 0x00, 0x7C, 0x80, // 123 + 0xFE, 0xFC, // 124 + 0x02, 0x7C, 0x80, 0x80, 0x7C, 0x00, // 125 + 0x40, 0x20, 0x20, 0x60, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFC, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFC, 0x1C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1C // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/Heydings_Controls_32pt.h b/lib/BrbDisplayBase/fonts/Heydings_Controls_32pt.h index dba70f4..f01fa0c 100644 --- a/lib/BrbDisplayBase/fonts/Heydings_Controls_32pt.h +++ b/lib/BrbDisplayBase/fonts/Heydings_Controls_32pt.h @@ -1,151 +1,151 @@ - - -/* - * Heydings Controls_32pt - * - * created with FontCreator 4.3 - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : Heydings Controls_32pt.h - * Date : 03.03.2019 - * Font size in bytes : 87585 - * Font width : 10 - * Font height : 33 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - */ - -#include -#include - -#ifndef HEYDINGS_CONTROLS_32PT_H -#define HEYDINGS_CONTROLS_32PT_H - -#define HEYDINGS_CONTROLS_32PT_WIDTH 10 -#define HEYDINGS_CONTROLS_32PT_HEIGHT 33 - -static const uint8_t Heydings_Controls_32pt[] PROGMEM = -{ - 0x56, 0x21, // size - 0x0A, // width - 0x21, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x22, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1B, 0x1F, 0x1B, 0x1F, 0x1F, 0x1F, 0x1B, 0x1B, 0x1B, - 0x1B, 0x1A, 0x12, 0x15, 0x1B, 0x1B, 0x1F, 0x1F, 0x1B, 0x1F, - 0x1B, 0x1F, 0x1F, 0x1B, 0x1B, 0x1B, 0x1B, 0x17, 0x1B, 0x15, - 0x1B, 0x1F, 0x1B, 0x1F, 0x13, 0x1B, 0x1F, 0x19, 0x11, 0x1B, - 0x13, 0x13, 0x15, 0x19, 0x1A, 0x0F, 0x18, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x1A, 0x1B, 0x1B, 0x13, - 0x1F, 0x1B, 0x1F, 0x1F, 0x1B, 0x1F, 0x19, 0x1B, 0x1F, 0x0F, - 0x1B, 0x1A, 0x1B, 0x1B, 0x1F, 0x12, 0x1F, 0x1A, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x8F, 0x03, 0x01, 0x60, 0x60, 0x60, 0xF8, 0xF8, 0x60, 0x60, 0x01, 0x03, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF1, 0xFF, 0x3F, 0x1E, 0x3C, 0x38, 0x30, 0x70, 0x71, 0x71, 0x30, 0x38, 0x38, 0x1C, 0x0F, 0x07, 0x03, 0x70, 0xF8, 0xFC, 0xFE, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 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, // 43 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFC, 0xFF, 0x07, 0x03, 0x01, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x01, 0x03, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF3, 0xFF, 0x1F, 0x1C, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, 0x30, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x01, 0x70, 0xF8, 0xFC, 0xFE, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 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, // 45 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x80, 0x80, 0x80, 0x80, 0x80, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x80, 0x80, 0x01, 0x01, 0x01, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x01, 0x01, 0x06, 0x06, 0x06, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9F, 0x9F, 0x9E, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xE7, 0xEF, 0xEF, 0xE7, 0x00, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF1, 0xFB, 0xFB, 0xF1, 0x00, 0x00, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0F, 0x1F, 0x3F, 0x7F, 0xFB, 0xF1, 0xE0, 0x80, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0x78, 0x7F, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x40, 0xC0, 0x40, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x3C, 0x3E, 0xF7, 0xFF, 0x1F, 0x09, 0x08, 0x0C, 0x0C, 0x0C, 0xFF, 0x0C, 0x0C, 0x0C, 0x08, 0x09, 0x1F, 0x7F, 0xFB, 0x36, 0x3C, 0x78, 0xF0, 0xC0, 0x7F, 0xFF, 0x8C, 0x0C, 0x0C, 0xFF, 0xCC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFF, 0x3F, 0x0C, 0x0C, 0xED, 0xFF, 0x00, 0x01, 0x3B, 0xFE, 0xC4, 0x85, 0x85, 0x84, 0xB4, 0xB4, 0xB4, 0xFC, 0x78, 0x37, 0x30, 0x7C, 0xF4, 0xB4, 0xB4, 0x84, 0x85, 0x85, 0x84, 0xCC, 0x79, 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, 0x00, 0x00, 0x00, 0x00, // 56 - 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xEE, 0xCE, 0xFE, 0x7E, 0x3E, 0x32, 0x3E, 0x3E, 0x7E, 0xCE, 0xEE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0xFD, 0xDD, 0xCF, 0xF8, 0xF0, 0xE0, 0x20, 0xE0, 0xF0, 0xF8, 0xCF, 0x9D, 0xFD, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC0, 0xC0, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xF0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0x00, 0x07, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x40, 0x07, 0x00, 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 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, // 62 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x8C, 0x8C, 0x04, 0x06, 0x46, 0xE6, 0xF6, 0xF6, 0xE6, 0x06, 0x06, 0xCC, 0xCC, 0xCC, 0x98, 0x18, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x7C, 0xFF, 0x01, 0x00, 0x02, 0x8F, 0xCF, 0xCF, 0x87, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x80, 0x80, 0xC0, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7B, 0x3F, 0x00, 0x03, 0x07, 0x0C, 0x18, 0x31, 0x33, 0x63, 0x63, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 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, // 65 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x40, 0xE0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1C, 0x38, 0x30, 0xB0, 0xB0, 0xB0, 0xF9, 0xDF, 0xCF, 0xC0, 0xE0, 0xF0, 0xF0, 0xB8, 0xB8, 0x3C, 0x1C, 0x1C, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0C, 0x04, 0x38, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xC1, 0xE3, 0x73, 0x3F, 0x1E, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xA0, 0xA0, 0xA0, 0xA0, 0x20, 0x20, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBF, 0xBF, 0xBF, 0xBF, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF7, 0xF7, 0xF7, 0xF7, 0xF3, 0xF0, 0xF0, 0x30, 0x30, 0x70, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x03, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0xF0, 0x80, 0x00, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0x3F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0x40, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 70 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF8, 0xFC, 0x38, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF1, 0xF9, 0x7F, 0x3F, 0x1F, 0x1F, 0x7E, 0xFC, 0xF8, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x73, 0xF1, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x70, 0x78, 0x3C, 0x3E, 0x1F, 0x0F, 0x07, 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, // 72 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x20, 0x20, 0xE0, 0x60, 0x60, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x38, 0x0E, 0x87, 0xE1, 0x38, 0x0E, 0x07, 0x81, 0xC0, 0x70, 0x1C, 0x87, 0xC3, 0x77, 0x1C, 0xFC, 0xFF, 0x07, 0x04, 0x04, 0x0F, 0x0B, 0x18, 0x10, 0x78, 0xCE, 0xC3, 0x60, 0x38, 0x0E, 0x03, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x7E, 0x3C, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x02, 0x03, 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, // 76 - 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x08, 0x07, 0x03, 0x07, 0x0F, 0x0E, 0xE4, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xE4, 0x0E, 0x0F, 0x07, 0x03, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xF8, 0xF0, 0xF8, 0xFC, 0x9C, 0x88, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x98, 0xFC, 0xF8, 0xF0, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xFC, 0x3E, 0x1F, 0x0F, 0x0F, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x0F, 0x1F, 0x3E, 0xFC, 0xFC, 0xF0, 0xE0, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x3C, 0x7C, 0x78, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x78, 0x78, 0x7C, 0x3E, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, // 79 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0x60, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x8C, 0x98, 0x30, 0xE0, 0xC0, 0xE0, 0x30, 0x9C, 0xC8, 0xF4, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x80, 0xE0, 0xC0, 0x8C, 0x1C, 0x78, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0xF9, 0xF4, 0xE6, 0xF3, 0xF9, 0xFC, 0xF9, 0xF3, 0xE6, 0xF4, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE3, 0xFF, 0x7F, 0x00, 0xC1, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0xFF, 0x00, 0x01, 0x03, 0x03, 0x38, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, // 81 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x03, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x06, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x06, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 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, // 84 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x3C, 0x3E, 0x7F, 0xFF, 0xFF, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0x7E, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 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, 0x00, 0x00, // 85 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0xC3, 0xF3, 0xF3, 0xF9, 0xF9, 0xF9, 0xC1, 0xE3, 0xE3, 0x07, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x61, 0xE3, 0xC7, 0xCF, 0xCF, 0xCF, 0xC7, 0xE7, 0x61, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 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, // 86 - 0x40, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0x1F, 0x7F, 0xC3, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xFF, 0x3F, 0x00, 0x80, 0xE1, 0x73, 0x1F, 0x1E, 0x0C, 0x00, 0x08, 0x1C, 0x3E, 0x73, 0xE1, 0xC0, 0x00, 0x7E, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF3, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0xF8, 0xFC, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFC, 0x78, 0x30, 0x20, 0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xC7, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFC, 0xF7, 0xF1, 0x38, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x32, 0x1D, 0x08, 0x01, 0xE3, 0x33, 0x07, 0x33, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xE0, 0xF1, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x88, 0xF0, 0xE0, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xF0, 0xF0, 0xDB, 0x43, 0x51, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x01, 0x07, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x77, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3F, 0x3F, 0x3F, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x1E, 0x1F, 0x3F, 0x7F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x7F, 0x3F, 0x3F, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x1C, 0x7F, 0xFF, 0x7F, 0x3C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0xF0, 0xF0, 0xE0, 0xF2, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0x00, 0x81, 0xE1, 0x7B, 0x1F, 0x07, 0x07, 0x0F, 0x06, 0x00, 0x00, 0x04, 0x7E, 0xDB, 0xC1, 0x60, 0x60, 0x30, 0x3C, 0x0E, 0x03, 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, // 101 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x3B, 0x3B, 0x3B, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x76, 0x76, 0x76, 0x76, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 106 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0xF8, 0x02, 0x06, 0x0E, 0x1E, 0x3E, 0x67, 0xC7, 0x80, 0x00, 0x80, 0xC7, 0xE7, 0x76, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE3, 0xE7, 0xE3, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 - 0x00, 0x80, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x00, 0x01, 0x11, 0x0B, 0x0F, 0x0F, 0x0F, 0xEF, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xEF, 0x0F, 0x0F, 0x0F, 0x0B, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4, 0x7C, 0x3C, 0x3C, 0xFD, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x7D, 0x3C, 0x3C, 0x7C, 0xF4, 0x64, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x06, 0xE8, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x3E, 0x7F, 0xFF, 0x3F, 0x1E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x8F, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x8F, 0x8F, 0x73, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x73, 0x73, 0xFC, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xC8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x07, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1F, 0x3E, 0xFC, 0xF0, 0xE0, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1E, 0x3C, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x3C, 0x3E, 0x1F, 0x0F, 0x03, 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, // 114 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0x70, 0x20, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0xB8, 0x7E, 0x7C, 0x3C, 0x18, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x0B, 0x0D, 0x1E, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFE, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x20, 0x20, 0x2F, 0x2F, 0x2E, 0xEE, 0xEE, 0xEE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 - -}; - -#endif + + +/* + * Heydings Controls_32pt + * + * created with FontCreator 4.3 + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Heydings Controls_32pt.h + * Date : 03.03.2019 + * Font size in bytes : 87585 + * Font width : 10 + * Font height : 33 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + */ + +#include +#include + +#ifndef HEYDINGS_CONTROLS_32PT_H +#define HEYDINGS_CONTROLS_32PT_H + +#define HEYDINGS_CONTROLS_32PT_WIDTH 10 +#define HEYDINGS_CONTROLS_32PT_HEIGHT 33 + +static const uint8_t Heydings_Controls_32pt[] PROGMEM = +{ + 0x56, 0x21, // size + 0x0A, // width + 0x21, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x22, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1B, 0x1F, 0x1B, 0x1F, 0x1F, 0x1F, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1A, 0x12, 0x15, 0x1B, 0x1B, 0x1F, 0x1F, 0x1B, 0x1F, + 0x1B, 0x1F, 0x1F, 0x1B, 0x1B, 0x1B, 0x1B, 0x17, 0x1B, 0x15, + 0x1B, 0x1F, 0x1B, 0x1F, 0x13, 0x1B, 0x1F, 0x19, 0x11, 0x1B, + 0x13, 0x13, 0x15, 0x19, 0x1A, 0x0F, 0x18, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x1A, 0x1B, 0x1B, 0x13, + 0x1F, 0x1B, 0x1F, 0x1F, 0x1B, 0x1F, 0x19, 0x1B, 0x1F, 0x0F, + 0x1B, 0x1A, 0x1B, 0x1B, 0x1F, 0x12, 0x1F, 0x1A, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x8F, 0x03, 0x01, 0x60, 0x60, 0x60, 0xF8, 0xF8, 0x60, 0x60, 0x01, 0x03, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF1, 0xFF, 0x3F, 0x1E, 0x3C, 0x38, 0x30, 0x70, 0x71, 0x71, 0x30, 0x38, 0x38, 0x1C, 0x0F, 0x07, 0x03, 0x70, 0xF8, 0xFC, 0xFE, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 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, // 43 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFC, 0xFF, 0x07, 0x03, 0x01, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x01, 0x03, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF3, 0xFF, 0x1F, 0x1C, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, 0x30, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x01, 0x70, 0xF8, 0xFC, 0xFE, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 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, // 45 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x80, 0x80, 0x80, 0x80, 0x80, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x80, 0x80, 0x01, 0x01, 0x01, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x01, 0x01, 0x06, 0x06, 0x06, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9F, 0x9F, 0x9E, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xE7, 0xEF, 0xEF, 0xE7, 0x00, 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF1, 0xFB, 0xFB, 0xF1, 0x00, 0x00, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0F, 0x1F, 0x3F, 0x7F, 0xFB, 0xF1, 0xE0, 0x80, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0x78, 0x7F, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x40, 0xC0, 0x40, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x3C, 0x3E, 0xF7, 0xFF, 0x1F, 0x09, 0x08, 0x0C, 0x0C, 0x0C, 0xFF, 0x0C, 0x0C, 0x0C, 0x08, 0x09, 0x1F, 0x7F, 0xFB, 0x36, 0x3C, 0x78, 0xF0, 0xC0, 0x7F, 0xFF, 0x8C, 0x0C, 0x0C, 0xFF, 0xCC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFF, 0x3F, 0x0C, 0x0C, 0xED, 0xFF, 0x00, 0x01, 0x3B, 0xFE, 0xC4, 0x85, 0x85, 0x84, 0xB4, 0xB4, 0xB4, 0xFC, 0x78, 0x37, 0x30, 0x7C, 0xF4, 0xB4, 0xB4, 0x84, 0x85, 0x85, 0x84, 0xCC, 0x79, 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, 0x00, 0x00, 0x00, 0x00, // 56 + 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xEE, 0xCE, 0xFE, 0x7E, 0x3E, 0x32, 0x3E, 0x3E, 0x7E, 0xCE, 0xEE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0xFD, 0xDD, 0xCF, 0xF8, 0xF0, 0xE0, 0x20, 0xE0, 0xF0, 0xF8, 0xCF, 0x9D, 0xFD, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC0, 0xC0, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xF0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0x00, 0x07, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0x40, 0x07, 0x00, 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x03, 0x01, 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, // 62 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x8C, 0x8C, 0x04, 0x06, 0x46, 0xE6, 0xF6, 0xF6, 0xE6, 0x06, 0x06, 0xCC, 0xCC, 0xCC, 0x98, 0x18, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x7C, 0xFF, 0x01, 0x00, 0x02, 0x8F, 0xCF, 0xCF, 0x87, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x80, 0x80, 0xC0, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7B, 0x3F, 0x00, 0x03, 0x07, 0x0C, 0x18, 0x31, 0x33, 0x63, 0x63, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 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, // 65 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x40, 0xE0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1C, 0x38, 0x30, 0xB0, 0xB0, 0xB0, 0xF9, 0xDF, 0xCF, 0xC0, 0xE0, 0xF0, 0xF0, 0xB8, 0xB8, 0x3C, 0x1C, 0x1C, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0C, 0x04, 0x38, 0x7E, 0xE7, 0xC3, 0xC3, 0xC3, 0xC1, 0xE3, 0x73, 0x3F, 0x1E, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xA0, 0xA0, 0xA0, 0xA0, 0x20, 0x20, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBF, 0xBF, 0xBF, 0xBF, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF7, 0xF7, 0xF7, 0xF7, 0xF3, 0xF0, 0xF0, 0x30, 0x30, 0x70, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x03, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0xF0, 0x80, 0x00, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0x3F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0x40, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 70 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF8, 0xFC, 0x38, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF1, 0xF9, 0x7F, 0x3F, 0x1F, 0x1F, 0x7E, 0xFC, 0xF8, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x73, 0xF1, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x70, 0x78, 0x3C, 0x3E, 0x1F, 0x0F, 0x07, 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, // 72 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x20, 0x20, 0xE0, 0x60, 0x60, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x38, 0x0E, 0x87, 0xE1, 0x38, 0x0E, 0x07, 0x81, 0xC0, 0x70, 0x1C, 0x87, 0xC3, 0x77, 0x1C, 0xFC, 0xFF, 0x07, 0x04, 0x04, 0x0F, 0x0B, 0x18, 0x10, 0x78, 0xCE, 0xC3, 0x60, 0x38, 0x0E, 0x03, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x7E, 0x3C, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x02, 0x03, 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, // 76 + 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x08, 0x07, 0x03, 0x07, 0x0F, 0x0E, 0xE4, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xE4, 0x0E, 0x0F, 0x07, 0x03, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xF8, 0xF0, 0xF8, 0xFC, 0x9C, 0x88, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x11, 0x98, 0xFC, 0xF8, 0xF0, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xFC, 0x3E, 0x1F, 0x0F, 0x0F, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x0F, 0x1F, 0x3E, 0xFC, 0xFC, 0xF0, 0xE0, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x3C, 0x7C, 0x78, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x78, 0x78, 0x7C, 0x3E, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, // 79 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0x60, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x8C, 0x98, 0x30, 0xE0, 0xC0, 0xE0, 0x30, 0x9C, 0xC8, 0xF4, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x80, 0xE0, 0xC0, 0x8C, 0x1C, 0x78, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0xF9, 0xF4, 0xE6, 0xF3, 0xF9, 0xFC, 0xF9, 0xF3, 0xE6, 0xF4, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE3, 0xFF, 0x7F, 0x00, 0xC1, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0xFF, 0x00, 0x01, 0x03, 0x03, 0x38, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, // 81 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x03, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x06, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x06, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 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, // 84 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x3C, 0x3E, 0x7F, 0xFF, 0xFF, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0x7E, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 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, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0xC3, 0xF3, 0xF3, 0xF9, 0xF9, 0xF9, 0xC1, 0xE3, 0xE3, 0x07, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x61, 0xE3, 0xC7, 0xCF, 0xCF, 0xCF, 0xC7, 0xE7, 0x61, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 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, // 86 + 0x40, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0x1F, 0x7F, 0xC3, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xFF, 0x3F, 0x00, 0x80, 0xE1, 0x73, 0x1F, 0x1E, 0x0C, 0x00, 0x08, 0x1C, 0x3E, 0x73, 0xE1, 0xC0, 0x00, 0x7E, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF3, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0xF8, 0xFC, 0xFE, 0xFC, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFC, 0x78, 0x30, 0x20, 0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xC7, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFC, 0xF7, 0xF1, 0x38, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0xFF, 0xFF, 0x7F, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x32, 0x1D, 0x08, 0x01, 0xE3, 0x33, 0x07, 0x33, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0xE0, 0xF1, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x88, 0xF0, 0xE0, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xF0, 0xF0, 0xDB, 0x43, 0x51, 0x0F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x01, 0x07, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x77, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x3F, 0x3F, 0x3F, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x1E, 0x1F, 0x3F, 0x7F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x7F, 0x3F, 0x3F, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0C, 0x1C, 0x7F, 0xFF, 0x7F, 0x3C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0xF0, 0xF0, 0xE0, 0xF2, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x1F, 0x07, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0x00, 0x81, 0xE1, 0x7B, 0x1F, 0x07, 0x07, 0x0F, 0x06, 0x00, 0x00, 0x04, 0x7E, 0xDB, 0xC1, 0x60, 0x60, 0x30, 0x3C, 0x0E, 0x03, 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, // 101 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x3B, 0x3B, 0x3B, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x76, 0x76, 0x76, 0x76, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 106 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0xF8, 0x02, 0x06, 0x0E, 0x1E, 0x3E, 0x67, 0xC7, 0x80, 0x00, 0x80, 0xC7, 0xE7, 0x76, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE3, 0xE7, 0xE3, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x80, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x00, 0x01, 0x11, 0x0B, 0x0F, 0x0F, 0x0F, 0xEF, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xEF, 0x0F, 0x0F, 0x0F, 0x0B, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4, 0x7C, 0x3C, 0x3C, 0xFD, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x7D, 0x3C, 0x3C, 0x7C, 0xF4, 0x64, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x06, 0xE8, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x3E, 0x7F, 0xFF, 0x3F, 0x1E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x8F, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x8F, 0x8F, 0x73, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x73, 0x73, 0xFC, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xC8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x07, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1F, 0x3E, 0xFC, 0xF0, 0xE0, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1E, 0x3C, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x3C, 0x3E, 0x1F, 0x0F, 0x03, 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, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0x70, 0x20, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0xB8, 0x7E, 0x7C, 0x3C, 0x18, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x0B, 0x0D, 0x1E, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFE, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x20, 0x20, 0x2F, 0x2F, 0x2E, 0xEE, 0xEE, 0xEE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/Heydings_Icons_32pt.h b/lib/BrbDisplayBase/fonts/Heydings_Icons_32pt.h index b0c041a..07af12c 100644 --- a/lib/BrbDisplayBase/fonts/Heydings_Icons_32pt.h +++ b/lib/BrbDisplayBase/fonts/Heydings_Icons_32pt.h @@ -1,151 +1,151 @@ - - -/* - * Heydings_Icons_32pt - * - * created with FontCreator 4.3 - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : Heydings_Icons_32pt.h - * Date : 03.03.2019 - * Font size in bytes : 85473 - * Font width : 10 - * Font height : 33 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - */ - -#include -#include - -#ifndef HEYDINGS_ICONS_32PT_H -#define HEYDINGS_ICONS_32PT_H - -#define HEYDINGS_ICONS_32PT_WIDTH 10 -#define HEYDINGS_ICONS_32PT_HEIGHT 33 - -static const uint8_t Heydings_Icons_32pt[] PROGMEM = -{ - 0x4D, 0xE1, // size - 0x0A, // width - 0x21, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x22, 0x1B, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1B, 0x1B, 0x1F, 0x1B, 0x1F, 0x1F, 0x1F, 0x1B, 0x17, 0x1C, - 0x1B, 0x14, 0x1F, 0x1F, 0x17, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1D, 0x15, 0x11, 0x1B, 0x15, 0x1B, 0x1B, 0x1B, - 0x1A, 0x1B, 0x19, 0x0E, 0x18, 0x1B, 0x1B, 0x1B, 0x0F, 0x1B, - 0x1B, 0x1B, 0x17, 0x15, 0x19, 0x1A, 0x1B, 0x1B, 0x1B, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1B, 0x1C, 0x19, 0x0D, 0x1B, - 0x15, 0x1B, 0x1B, 0x1B, 0x1F, 0x1B, 0x11, 0x1B, 0x11, 0x15, - 0x1B, 0x17, 0x13, 0x1B, 0x1B, 0x0D, 0x1B, 0x1A, 0x1F, 0x1B, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0xC7, 0xC3, 0xC7, 0x1F, 0x7E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFE, 0xFF, 0xE7, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xEE, 0xEF, 0xEE, 0xE4, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE7, 0xFF, 0xFE, 0xF8, 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, // 33 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xDC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xB0, 0x00, 0x00, 0x10, 0x19, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x73, 0x41, 0x00, 0x00, 0x03, 0x03, 0x03, 0x3F, 0x1F, 0x1F, 0x1F, 0x3F, 0xFF, 0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0x3F, 0x1F, 0x3F, 0x3F, 0x3F, 0x07, 0x07, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 43 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 45 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFC, 0xF9, 0xE3, 0xC7, 0x8F, 0x1F, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xC0, 0x3F, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x9F, 0x9F, 0xCF, 0xCE, 0xE4, 0xE1, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x04, 0x0C, 0x1E, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 49 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0x1F, 0x03, 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, // 50 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x40, 0x40, 0x40, 0x40, 0x44, 0x47, 0xC7, 0xC7, 0x07, 0x07, 0xFF, 0xFF, 0x07, 0xC7, 0xC7, 0x47, 0x46, 0x40, 0x40, 0x40, 0x40, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xE6, 0x86, 0x07, 0x07, 0xC6, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0x78, 0x38, 0x80, 0xFF, 0xF0, 0x98, 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0xF1, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xF8, 0xF3, 0xE7, 0xE7, 0xE7, 0xF7, 0xF8, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 52 - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0xE0, 0xE0, 0xFF, 0x03, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x03, 0xFF, 0xFF, 0xFF, 0x18, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x18, 0xFF, 0xFF, 0xFF, 0xC0, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x1F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x3F, 0x3F, 0x3F, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x3F, 0xFF, 0xFF, 0xE7, 0x87, 0x07, 0x07, 0x07, 0x00, 0x00, 0xE0, 0xC0, 0xE0, 0x00, 0x00, 0x07, 0x07, 0x07, 0x87, 0xC7, 0xFF, 0xFF, 0x7F, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0x3C, 0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 65 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x1F, 0x0F, 0x03, 0x01, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xC0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xE0, 0xE4, 0xFE, 0xFF, 0xFE, 0x3E, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0x90, 0x00, 0x18, 0x3D, 0xBF, 0xFF, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x03, 0x07, 0x07, 0x3F, 0x3F, 0x7F, 0x3F, 0x3E, 0x7E, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0xFE, 0x7F, 0x3F, 0x1F, 0x1F, 0x1F, 0x0F, 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, // 67 - 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x11, 0x13, 0x17, 0x1E, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x1E, 0x0E, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0x02, 0x06, 0x0C, 0x18, 0x30, 0xE0, 0xC0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xE0, 0xE0, 0x30, 0x18, 0x0C, 0x04, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xD8, 0xCC, 0xC6, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC6, 0xCC, 0xD8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xF0, 0xF0, 0xF8, 0x7C, 0x1E, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x07, 0x03, 0x01, 0x81, 0x81, 0xC3, 0xFF, 0xFF, 0x7F, 0x3F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x98, 0xCC, 0xE6, 0xF3, 0xF9, 0xFC, 0xF9, 0xF3, 0xE7, 0xCE, 0x9F, 0x3F, 0x7F, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x03, 0x01, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x01, 0x03, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xCF, 0x67, 0x13, 0x1B, 0x0B, 0x0B, 0x1B, 0x13, 0x67, 0xCF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xEE, 0xC8, 0xD0, 0xD0, 0xD0, 0xD0, 0xC8, 0xEC, 0xF3, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 - 0x80, 0x80, 0x80, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0xE0, 0xE0, 0xE0, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0xE0, 0xE0, 0xE0, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x67, 0x67, 0x61, 0x61, 0x67, 0x67, 0x67, 0x61, 0x61, 0x67, 0x67, 0x61, 0x61, 0x67, 0x67, 0x67, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD8, 0xD8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFB, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xC3, 0xC3, 0xC3, 0xE7, 0xFF, 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0x1F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0x3E, 0x1E, 0x1E, 0x1E, 0x3E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x9F, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF3, 0xFF, 0x1F, 0x1C, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, 0x30, 0x38, 0x38, 0x1E, 0x0F, 0x07, 0x01, 0x70, 0xF8, 0xFC, 0xFE, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x88, 0xC4, 0xFF, 0xF6, 0x84, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x04, 0x06, 0x06, 0x06, 0x0F, 0x1F, 0x71, 0xF1, 0xF1, 0x3F, 0x1F, 0x06, 0x06, 0x06, 0x04, 0x04, 0x00, 0x80, 0xF1, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x78, 0x70, 0x60, 0xE0, 0xE2, 0xE6, 0xEF, 0xEF, 0xE2, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, // 78 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE1, 0xC1, 0x83, 0x07, 0x0F, 0x0F, 0x1F, 0x07, 0x01, 0x80, 0xE0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xC7, 0x83, 0xC3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x01, 0x03, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x81, 0x80, 0xE0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x78, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xC3, 0xC1, 0xC3, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xE1, 0xE1, 0xE1, 0xC3, 0xC3, 0x83, 0x87, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x03, 0x07, 0x0F, 0x1E, 0x7C, 0xF8, 0xE0, 0x80, 0x00, 0x03, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0xF0, 0xF0, 0xF8, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x60, 0x60, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF0, 0xF0, 0x30, 0x38, 0xFE, 0x33, 0x30, 0xF0, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x30, 0x30, 0x30, 0xF0, 0x30, 0x30, 0x33, 0x3F, 0xFC, 0x30, 0xF0, 0xF0, 0x30, 0x00, 0x00, 0x03, 0x1F, 0x7D, 0xFF, 0xC9, 0xC9, 0xFF, 0xC9, 0xC9, 0xC9, 0xC9, 0xFF, 0xC9, 0xC9, 0xC9, 0xFF, 0xC9, 0xC9, 0xC9, 0xE9, 0xFF, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x0F, 0xEF, 0xCF, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x38, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x01, 0xCF, 0xFF, 0xFC, 0x00, 0x03, 0x07, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1E, 0x0F, 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, // 84 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x4C, 0xFF, 0x4C, 0x4C, 0x4C, 0xFF, 0x4C, 0x4C, 0x4C, 0xFF, 0x4C, 0x4C, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0xC4, 0xFF, 0xC4, 0xC4, 0xC4, 0xFF, 0xC4, 0xC4, 0xC4, 0xFF, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x40, 0x40, 0xC0, 0xE0, 0x00, 0x04, 0xFE, 0xDE, 0xC2, 0xB2, 0xBE, 0xBE, 0xA3, 0xA1, 0x9F, 0x9F, 0x93, 0x90, 0x8E, 0x8F, 0x8F, 0x88, 0x8C, 0x87, 0x87, 0x84, 0x84, 0x87, 0x83, 0x84, 0x00, 0xFF, 0xD7, 0xD1, 0xD8, 0xDE, 0xDF, 0xD3, 0xD0, 0xDC, 0xDF, 0xD7, 0xD1, 0x18, 0xDE, 0xDF, 0xD3, 0xD0, 0xDC, 0xDF, 0xD3, 0xD0, 0xDC, 0xDF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x3B, 0x61, 0xF0, 0xF1, 0x71, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE3, 0xC1, 0x81, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x80, 0xC1, 0xE3, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x06, 0x04, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x04, 0x0E, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xF8, 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF0, 0x00, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0x00, 0x00, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xC0, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0xEE, 0xEE, 0xEE, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x3E, 0x32, 0x32, 0x32, 0xF3, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xCF, 0xC9, 0xC9, 0xC9, 0xF9, 0xF9, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x9C, 0xCE, 0xE7, 0xE3, 0xE1, 0x00, 0x80, 0xC0, 0xE0, 0x7B, 0x3F, 0x0E, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x98, 0xDC, 0xEC, 0xFC, 0xFC, 0xFC, 0xFF, 0x9F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x3F, 0x7F, 0xE1, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0x39, 0x1D, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7C, 0xF0, 0xFC, 0x1F, 0x07, 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, // 98 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07, 0x07, 0x9F, 0x9F, 0x87, 0x87, 0x9F, 0x9F, 0x9F, 0x87, 0x87, 0x9F, 0x9F, 0x87, 0x87, 0x9F, 0x9F, 0x9F, 0x07, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xC0, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 - 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x40, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3F, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x8C, 0xC4, 0xE4, 0xF0, 0xF8, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x0F, 0x1F, 0x3F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0xF3, 0xF9, 0xFE, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 - 0x60, 0xF0, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xFC, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x10, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0xFC, 0xFC, 0x7C, 0x7F, 0x7F, 0xFC, 0xFC, 0x7C, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFE, 0xFF, 0xFB, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF9, 0xFF, 0xFE, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0x80, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0x03, 0x0F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x03, 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, // 104 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x61, 0x40, 0x40, 0x40, 0x61, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xE7, 0xE0, 0xE0, 0xE0, 0xE0, 0xE7, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 106 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x01, 0x00, 0xC0, 0x80, 0x80, 0xE0, 0xC0, 0x80, 0xC0, 0x00, 0x01, 0x03, 0xFF, 0xFC, 0x01, 0x07, 0x0F, 0x3C, 0xF8, 0xC0, 0x03, 0x07, 0x01, 0x03, 0x07, 0xC1, 0xF0, 0x7C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1B, 0x1B, 0xDB, 0xDB, 0xDB, 0x5B, 0x1B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0x80, 0xE0, 0xC0, 0x8C, 0x1C, 0x78, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE3, 0xFF, 0x7F, 0x00, 0xC1, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0x00, 0x01, 0x03, 0x03, 0x39, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, // 109 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x30, 0x30, 0x30, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x1C, 0x1E, 0x16, 0x13, 0x13, 0x11, 0x13, 0x13, 0x12, 0x1E, 0x1C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0xFF, 0x1F, 0x1F, 0xFF, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0xFF, 0x1F, 0x9F, 0x7F, 0x3F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x80, 0x20, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x38, 0x03, 0x1E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x78, 0x31, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x7C, 0x1E, 0x0E, 0x03, 0x01, 0x00, 0x00, 0x08, 0x0C, 0x0E, 0x0E, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0x80, 0x60, 0x38, 0x1C, 0x0F, 0x07, 0x07, 0x03, 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, // 114 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0xFF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, 0x7E, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x3F, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFC, 0xFC, 0x3C, 0x1C, 0x1C, 0x7C, 0xF8, 0xE0, 0x80, 0x04, 0x1C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x7F, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x7F, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x78, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x78, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xC0, 0x9C, 0x3E, 0x7F, 0xFF, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBE, 0xDE, 0xEF, 0xF7, 0xF9, 0xF9, 0x1D, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x03, 0x81, 0xC1, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC1, 0x83, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x3F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x21, 0xE1, 0xE1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE1, 0xE1, 0x21, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x70, 0x61, 0xE3, 0xC3, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xE3, 0x61, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 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, // 121 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 - -}; - -#endif + + +/* + * Heydings_Icons_32pt + * + * created with FontCreator 4.3 + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Heydings_Icons_32pt.h + * Date : 03.03.2019 + * Font size in bytes : 85473 + * Font width : 10 + * Font height : 33 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + */ + +#include +#include + +#ifndef HEYDINGS_ICONS_32PT_H +#define HEYDINGS_ICONS_32PT_H + +#define HEYDINGS_ICONS_32PT_WIDTH 10 +#define HEYDINGS_ICONS_32PT_HEIGHT 33 + +static const uint8_t Heydings_Icons_32pt[] PROGMEM = +{ + 0x4D, 0xE1, // size + 0x0A, // width + 0x21, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x22, 0x1B, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1B, 0x1B, 0x1F, 0x1B, 0x1F, 0x1F, 0x1F, 0x1B, 0x17, 0x1C, + 0x1B, 0x14, 0x1F, 0x1F, 0x17, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1D, 0x15, 0x11, 0x1B, 0x15, 0x1B, 0x1B, 0x1B, + 0x1A, 0x1B, 0x19, 0x0E, 0x18, 0x1B, 0x1B, 0x1B, 0x0F, 0x1B, + 0x1B, 0x1B, 0x17, 0x15, 0x19, 0x1A, 0x1B, 0x1B, 0x1B, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1B, 0x1C, 0x19, 0x0D, 0x1B, + 0x15, 0x1B, 0x1B, 0x1B, 0x1F, 0x1B, 0x11, 0x1B, 0x11, 0x15, + 0x1B, 0x17, 0x13, 0x1B, 0x1B, 0x0D, 0x1B, 0x1A, 0x1F, 0x1B, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0xC7, 0xC3, 0xC7, 0x1F, 0x7E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFE, 0xFF, 0xE7, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xEE, 0xEF, 0xEE, 0xE4, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE7, 0xFF, 0xFE, 0xF8, 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, // 33 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xDC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xB0, 0x00, 0x00, 0x10, 0x19, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x73, 0x41, 0x00, 0x00, 0x03, 0x03, 0x03, 0x3F, 0x1F, 0x1F, 0x1F, 0x3F, 0xFF, 0x7F, 0x3F, 0x3F, 0x7F, 0xFF, 0x3F, 0x1F, 0x3F, 0x3F, 0x3F, 0x07, 0x07, 0x07, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 43 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 45 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFC, 0xF9, 0xE3, 0xC7, 0x8F, 0x1F, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xC0, 0x3F, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x9F, 0x9F, 0xCF, 0xCE, 0xE4, 0xE1, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x01, 0x04, 0x0C, 0x1E, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 49 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0x1F, 0x03, 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, // 50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x40, 0x40, 0x40, 0x40, 0x44, 0x47, 0xC7, 0xC7, 0x07, 0x07, 0xFF, 0xFF, 0x07, 0xC7, 0xC7, 0x47, 0x46, 0x40, 0x40, 0x40, 0x40, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xE6, 0x86, 0x07, 0x07, 0xC6, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0x78, 0x38, 0x80, 0xFF, 0xF0, 0x98, 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0xF1, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xF8, 0xF3, 0xE7, 0xE7, 0xE7, 0xF7, 0xF8, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, // 52 + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0xE0, 0xE0, 0xFF, 0x03, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x03, 0xFF, 0xFF, 0xFF, 0x18, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x18, 0xFF, 0xFF, 0xFF, 0xC0, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x1F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x3F, 0x3F, 0x3F, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x3F, 0xFF, 0xFF, 0xE7, 0x87, 0x07, 0x07, 0x07, 0x00, 0x00, 0xE0, 0xC0, 0xE0, 0x00, 0x00, 0x07, 0x07, 0x07, 0x87, 0xC7, 0xFF, 0xFF, 0x7F, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0x3C, 0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFE, 0xFE, 0xFC, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // 65 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x1F, 0x0F, 0x03, 0x01, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xC0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xE0, 0xE4, 0xFE, 0xFF, 0xFE, 0x3E, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0x90, 0x00, 0x18, 0x3D, 0xBF, 0xFF, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x03, 0x07, 0x07, 0x3F, 0x3F, 0x7F, 0x3F, 0x3E, 0x7E, 0xFC, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0xFE, 0x7F, 0x3F, 0x1F, 0x1F, 0x1F, 0x0F, 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, // 67 + 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x11, 0x13, 0x17, 0x1E, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x1E, 0x0E, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0x02, 0x06, 0x0C, 0x18, 0x30, 0xE0, 0xC0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xE0, 0xE0, 0x30, 0x18, 0x0C, 0x04, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xD8, 0xCC, 0xC6, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC6, 0xCC, 0xD8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF0, 0xF0, 0xF0, 0xF8, 0x7C, 0x1E, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x07, 0x03, 0x01, 0x81, 0x81, 0xC3, 0xFF, 0xFF, 0x7F, 0x3F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x98, 0xCC, 0xE6, 0xF3, 0xF9, 0xFC, 0xF9, 0xF3, 0xE7, 0xCE, 0x9F, 0x3F, 0x7F, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x03, 0x01, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0x01, 0x03, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0xCF, 0x67, 0x13, 0x1B, 0x0B, 0x0B, 0x1B, 0x13, 0x67, 0xCF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF3, 0xEE, 0xC8, 0xD0, 0xD0, 0xD0, 0xD0, 0xC8, 0xEC, 0xF3, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x80, 0x80, 0x80, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0xE0, 0xE0, 0xE0, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0xE0, 0xE0, 0xE0, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x67, 0x67, 0x61, 0x61, 0x67, 0x67, 0x67, 0x61, 0x61, 0x67, 0x67, 0x61, 0x61, 0x67, 0x67, 0x67, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD8, 0xD8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFB, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF0, 0xE0, 0x80, 0x1F, 0x3F, 0x7F, 0x7F, 0xFF, 0xC3, 0xC3, 0xC3, 0xE7, 0xFF, 0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0x1F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xF8, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0x3E, 0x1E, 0x1E, 0x1E, 0x3E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x9F, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF3, 0xFF, 0x1F, 0x1C, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, 0x30, 0x38, 0x38, 0x1E, 0x0F, 0x07, 0x01, 0x70, 0xF8, 0xFC, 0xFE, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x88, 0xC4, 0xFF, 0xF6, 0x84, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x04, 0x06, 0x06, 0x06, 0x0F, 0x1F, 0x71, 0xF1, 0xF1, 0x3F, 0x1F, 0x06, 0x06, 0x06, 0x04, 0x04, 0x00, 0x80, 0xF1, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x78, 0x70, 0x60, 0xE0, 0xE2, 0xE6, 0xEF, 0xEF, 0xE2, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, // 78 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE1, 0xC1, 0x83, 0x07, 0x0F, 0x0F, 0x1F, 0x07, 0x01, 0x80, 0xE0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xC7, 0x83, 0xC3, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x01, 0x03, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x81, 0x80, 0xE0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0x78, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xC3, 0xC1, 0xC3, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xE1, 0xE1, 0xE1, 0xC3, 0xC3, 0x83, 0x87, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x03, 0x07, 0x0F, 0x1E, 0x7C, 0xF8, 0xE0, 0x80, 0x00, 0x03, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF9, 0xF0, 0xF0, 0xF0, 0xF8, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x60, 0x60, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF0, 0xF0, 0x30, 0x38, 0xFE, 0x33, 0x30, 0xF0, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x30, 0x30, 0x30, 0xF0, 0x30, 0x30, 0x33, 0x3F, 0xFC, 0x30, 0xF0, 0xF0, 0x30, 0x00, 0x00, 0x03, 0x1F, 0x7D, 0xFF, 0xC9, 0xC9, 0xFF, 0xC9, 0xC9, 0xC9, 0xC9, 0xFF, 0xC9, 0xC9, 0xC9, 0xFF, 0xC9, 0xC9, 0xC9, 0xE9, 0xFF, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x0F, 0xEF, 0xCF, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x38, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x01, 0xCF, 0xFF, 0xFC, 0x00, 0x03, 0x07, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1E, 0x0F, 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, // 84 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x4C, 0xFF, 0x4C, 0x4C, 0x4C, 0xFF, 0x4C, 0x4C, 0x4C, 0xFF, 0x4C, 0x4C, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0xC4, 0xFF, 0xC4, 0xC4, 0xC4, 0xFF, 0xC4, 0xC4, 0xC4, 0xFF, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x40, 0x40, 0xC0, 0xE0, 0x00, 0x04, 0xFE, 0xDE, 0xC2, 0xB2, 0xBE, 0xBE, 0xA3, 0xA1, 0x9F, 0x9F, 0x93, 0x90, 0x8E, 0x8F, 0x8F, 0x88, 0x8C, 0x87, 0x87, 0x84, 0x84, 0x87, 0x83, 0x84, 0x00, 0xFF, 0xD7, 0xD1, 0xD8, 0xDE, 0xDF, 0xD3, 0xD0, 0xDC, 0xDF, 0xD7, 0xD1, 0x18, 0xDE, 0xDF, 0xD3, 0xD0, 0xDC, 0xDF, 0xD3, 0xD0, 0xDC, 0xDF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0x3B, 0x61, 0xF0, 0xF1, 0x71, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xE3, 0xC1, 0x81, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x80, 0xC1, 0xE3, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x06, 0x04, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x04, 0x0E, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xF8, 0xFC, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF0, 0x00, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0x00, 0x00, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xC0, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0xEE, 0xEE, 0xEE, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x3E, 0x32, 0x32, 0x32, 0xF3, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xCF, 0xC9, 0xC9, 0xC9, 0xF9, 0xF9, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x9C, 0xCE, 0xE7, 0xE3, 0xE1, 0x00, 0x80, 0xC0, 0xE0, 0x7B, 0x3F, 0x0E, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x98, 0xDC, 0xEC, 0xFC, 0xFC, 0xFC, 0xFF, 0x9F, 0x0F, 0x0F, 0x0F, 0x0F, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x3F, 0x7F, 0xE1, 0xC0, 0xC0, 0xC0, 0xE0, 0x71, 0x39, 0x1D, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7C, 0xF0, 0xFC, 0x1F, 0x07, 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, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07, 0x07, 0x9F, 0x9F, 0x87, 0x87, 0x9F, 0x9F, 0x9F, 0x87, 0x87, 0x9F, 0x9F, 0x87, 0x87, 0x9F, 0x9F, 0x9F, 0x07, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xC0, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x40, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3F, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x8C, 0xC4, 0xE4, 0xF0, 0xF8, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x0F, 0x1F, 0x3F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0xF3, 0xF9, 0xFE, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x60, 0xF0, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xFC, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x10, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0xFC, 0xFC, 0x7C, 0x7C, 0x7C, 0x7C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0xFC, 0xFC, 0x7C, 0x7F, 0x7F, 0xFC, 0xFC, 0x7C, 0x7C, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFE, 0xFF, 0xFB, 0xF8, 0x00, 0x00, 0x00, 0xF8, 0xF9, 0xFF, 0xFE, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFC, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0x80, 0xC0, 0xF0, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF0, 0xE0, 0x03, 0x0F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x03, 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, // 104 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x61, 0x40, 0x40, 0x40, 0x61, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xE7, 0xE0, 0xE0, 0xE0, 0xE0, 0xE7, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 106 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x01, 0x00, 0xC0, 0x80, 0x80, 0xE0, 0xC0, 0x80, 0xC0, 0x00, 0x01, 0x03, 0xFF, 0xFC, 0x01, 0x07, 0x0F, 0x3C, 0xF8, 0xC0, 0x03, 0x07, 0x01, 0x03, 0x07, 0xC1, 0xF0, 0x7C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1B, 0x1B, 0xDB, 0xDB, 0xDB, 0x5B, 0x1B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0x80, 0xE0, 0xC0, 0x8C, 0x1C, 0x78, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE3, 0xFF, 0x7F, 0x00, 0xC1, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0xFF, 0x00, 0x01, 0x03, 0x03, 0x39, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, // 109 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x30, 0x30, 0x30, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x1C, 0x1E, 0x16, 0x13, 0x13, 0x11, 0x13, 0x13, 0x12, 0x1E, 0x1C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, 0xFF, 0x1F, 0x1F, 0xFF, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0xFF, 0x1F, 0x9F, 0x7F, 0x3F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x80, 0x20, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x38, 0x03, 0x1E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x78, 0x31, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x7C, 0x1E, 0x0E, 0x03, 0x01, 0x00, 0x00, 0x08, 0x0C, 0x0E, 0x0E, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0x80, 0x60, 0x38, 0x1C, 0x0F, 0x07, 0x07, 0x03, 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, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0xFF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, 0x7E, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x07, 0x0F, 0x0F, 0x1F, 0x3F, 0x3F, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0xF8, 0xFC, 0xFC, 0xFE, 0xFE, 0xFC, 0xFC, 0x3C, 0x1C, 0x1C, 0x7C, 0xF8, 0xE0, 0x80, 0x04, 0x1C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0x7F, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x7F, 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x78, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x78, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xC0, 0x9C, 0x3E, 0x7F, 0xFF, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBE, 0xDE, 0xEF, 0xF7, 0xF9, 0xF9, 0x1D, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x03, 0x81, 0xC1, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC1, 0x83, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x3F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x21, 0xE1, 0xE1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE1, 0xE1, 0x21, 0x01, 0x00, 0x00, 0xC0, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x70, 0x61, 0xE3, 0xC3, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xE3, 0x61, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 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, // 121 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/IconWorks_32pt.h b/lib/BrbDisplayBase/fonts/IconWorks_32pt.h index 4a030c1..2bb018a 100644 --- a/lib/BrbDisplayBase/fonts/IconWorks_32pt.h +++ b/lib/BrbDisplayBase/fonts/IconWorks_32pt.h @@ -1,288 +1,288 @@ - - -/* - * IconWorks_32pt - * - * created with FontCreator 4.3 - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : IconWorks_32pt.h - * Date : 07.03.2019 - * Font size in bytes : 138819 - * Font width : 10 - * Font height : 32 - * Font first char : 32 - * Font last char : 253 - * Font used chars : 221 - */ - -#include -#include - -#ifndef ICONWORKS_32PT_H -#define ICONWORKS_32PT_H - -#define ICONWORKS_32PT_WIDTH 10 -#define ICONWORKS_32PT_HEIGHT 32 - -static const uint8_t IconWorks_32pt[] PROGMEM = -{ - 0x1E, 0x43, // size - 0x0A, // width - 0x20, // height - 0x20, // first char - 0xDD, // char count - - // char widths - 0x12, 0x1E, 0x1D, 0x1D, 0x11, 0x08, 0x1D, 0x13, 0x1E, 0x1F, - 0x1B, 0x1D, 0x1D, 0x15, 0x1D, 0x1E, 0x1F, 0x1C, 0x1D, 0x1D, - 0x1C, 0x1B, 0x1F, 0x17, 0x17, 0x19, 0x1D, 0x1D, 0x1D, 0x1F, - 0x1D, 0x1F, 0x1D, 0x16, 0x16, 0x1E, 0x18, 0x1D, 0x1A, 0x1D, - 0x1D, 0x1D, 0x1D, 0x1A, 0x1A, 0x19, 0x1B, 0x19, 0x13, 0x14, - 0x13, 0x14, 0x15, 0x1D, 0x1C, 0x1D, 0x1C, 0x1D, 0x20, 0x1F, - 0x16, 0x1A, 0x18, 0x15, 0x1D, 0x16, 0x16, 0x18, 0x19, 0x1F, - 0x1A, 0x20, 0x1D, 0x1D, 0x1D, 0x1A, 0x20, 0x1A, 0x1A, 0x17, - 0x13, 0x0D, 0x1C, 0x15, 0x14, 0x1D, 0x21, 0x1D, 0x13, 0x1D, - 0x20, 0x20, 0x20, 0x18, 0x19, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, - 0x08, 0x1B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1D, 0x08, 0x20, - 0x08, 0x15, 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x08, 0x08, 0x08, 0x08, - 0x20, 0x20, 0x08, 0x1F, 0x1D, 0x08, 0x08, 0x1E, 0x20, 0x20, - 0x08, 0x15, 0x19, 0x1B, 0x08, 0x15, 0x08, 0x08, 0x20, 0x1F, - 0x08, 0x21, 0x15, 0x08, 0x08, 0x1C, 0x1B, 0x08, 0x12, 0x08, - 0x08, 0x08, 0x1D, 0x20, 0x08, 0x20, 0x1A, 0x08, 0x08, 0x20, - 0x20, 0x20, 0x08, 0x1D, 0x1B, 0x18, 0x08, 0x14, 0x08, 0x08, - 0x1D, 0x20, 0x08, 0x1B, 0x20, 0x08, 0x08, 0x16, 0x1D, 0x08, - 0x18, - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 - 0xC0, 0xE0, 0x78, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x70, 0x70, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x78, 0xF0, 0xC0, 0x0F, 0x7F, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x38, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0E, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3E, 0x1E, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x3C, 0x6C, 0xCC, 0x8C, 0x8C, 0x0C, 0x0C, 0x0E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x8C, 0x8C, 0xCC, 0x6C, 0x7C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0x3F, 0x02, 0x80, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0x80, 0x80, 0x1F, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x70, 0x30, 0x30, 0xF0, 0xE0, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x08, 0x18, 0x10, 0x30, 0xA1, 0xE1, 0x41, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0xF0, 0xF8, 0x9C, 0x0C, 0x07, 0x03, 0x00, 0xC0, 0xE0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x0E, 0x38, 0xE0, 0xC0, 0x00, 0x07, 0x7F, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x3C, 0xF0, 0xE0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1C, 0x30, 0x1B, 0x1F, 0x0C, 0x00, // 35 - 0x80, 0xE0, 0x78, 0x18, 0x0C, 0x0E, 0x06, 0x86, 0x86, 0x86, 0x06, 0x0C, 0x0C, 0x18, 0x78, 0xE0, 0x80, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x0F, 0x0F, 0x19, 0x19, 0x19, 0x0F, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x1F, 0x7C, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 37 - 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x60, 0xE0, 0xE0, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0x40, 0xE0, 0xE0, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0xFE, 0xFE, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0F, 0x0F, 0x04, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, // 38 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x8E, 0xFC, 0xF8, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x03, 0x01, 0x01, 0x00, 0xF8, 0xFC, 0x0C, 0xFC, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x0F, 0x1C, 0x38, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x1E, 0x0F, 0x03, // 39 - 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xC0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xC0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xC0, // 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x20, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, // 41 - 0xE0, 0xE0, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x1C, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xE0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x01, 0x0F, 0x3E, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0E, 0x1C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x87, 0xC0, 0xE0, 0x30, 0x38, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xC3, 0x87, 0x06, 0x06, 0x76, 0x76, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x70, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xF0, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0F, 0x07, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0F, 0x07, // 46 - 0x60, 0xF0, 0xF0, 0x98, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE3, 0xE7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE7, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x31, 0x1B, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xE6, 0xE6, 0xB6, 0xD0, 0xD8, 0xD8, 0xC8, 0xCC, 0xCF, 0xCF, 0x03, 0x86, 0xCC, 0x78, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x00, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x78, 0x0E, 0x07, 0x03, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0E, 0x1C, 0xF8, 0xC0, 0x7F, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x01, 0x03, 0x0E, 0x1C, 0x18, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1E, 0x1E, 0x1F, 0x11, 0x00, 0x00, // 49 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x07, 0x0F, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x71, 0x33, 0x3F, 0x1E, 0x0E, 0x07, 0x03, 0x00, 0x00, // 50 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x3F, 0xFF, 0xC6, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xC6, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xFC, 0xFC, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x07, 0x03, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0F, 0x1F, 0x3F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x3F, 0x1F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0x7F, 0xFF, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x62, 0x36, 0x1E, 0x1E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x38, 0x1C, 0x8E, 0xC6, 0x63, 0x33, 0x31, 0x19, 0x19, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x19, 0x39, 0x71, 0x71, 0xE3, 0xC6, 0x86, 0x0C, 0x18, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0E, 0x06, 0x87, 0xC3, 0x63, 0x63, 0x63, 0xC3, 0x87, 0x06, 0x0E, 0x1C, 0x18, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x0C, 0x0C, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x84, 0x0C, 0x0C, 0x09, 0x19, 0x33, 0x63, 0xC6, 0x8C, 0x1C, 0x38, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x30, 0x31, 0xE1, 0xC1, 0x03, 0x06, 0x1C, 0xF8, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0x03, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x1F, // 55 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x8C, 0xC6, 0x63, 0x33, 0x19, 0x09, 0x0C, 0x0C, 0x84, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x00, 0xF8, 0xFE, 0x07, 0x01, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0x1C, 0x0E, 0x07, 0x03, 0xC1, 0xE1, 0x31, 0x31, 0x31, 0xE1, 0xC0, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 56 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x3C, 0xBE, 0x87, 0xC3, 0xE1, 0x30, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0x07, 0xE0, 0xF0, 0x18, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x0D, 0x8E, 0xC7, 0xEB, 0x7D, 0x3C, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 58 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0F, 0x07, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0xF0, 0xF0, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x3E, 0x37, 0x31, 0x30, 0xF0, 0xFE, 0x37, 0x31, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x31, 0x37, 0xFC, 0xF0, 0x31, 0x33, 0x36, 0x3C, 0xF0, 0xC0, 0x3F, 0xFF, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x18, 0x30, 0x30, 0x63, 0x7E, 0x78, 0xE0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0x78, 0x7E, 0x23, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDC, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, // 61 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x7C, 0x7C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 62 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x20, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDC, 0xF0, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, // 63 - 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xCF, 0x0C, 0x0C, 0xFC, 0xF8, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC0, 0xC0, 0xFF, 0x7F, // 64 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 65 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x33, 0x33, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC3, 0xC3, 0xC0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC0, 0xFF, 0x7F, // 66 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x9F, 0xBF, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB1, 0xB3, 0xB3, 0xB6, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x99, 0xC0, 0xE3, 0x33, 0x18, 0x0C, 0x9E, 0xF3, 0xE7, 0x7E, 0x3C, 0x18, 0x7F, 0xFF, 0xC0, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0x00, 0x00, 0xF0, 0xFC, 0xCE, 0xC7, 0xC3, 0x61, 0x30, 0x18, 0x0C, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, // 67 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x32, 0x34, 0x38, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x18, 0x18, 0x18, 0xFE, 0x18, 0x18, 0x18, // 68 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 69 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xEF, 0xEF, 0xEF, 0xEF, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 70 - 0xC0, 0xE0, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 71 - 0xC0, 0xE0, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x1E, 0x3E, 0x33, 0x63, 0x41, 0x00, 0x00, 0x61, 0x63, 0x33, 0x1E, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 72 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 73 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x70, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x0E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFE, 0xC0, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x2C, 0x6C, 0x6C, 0x6C, 0x2C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0F, 0x0F, 0x0C, // 74 - 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x3C, 0x7F, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x04, // 75 - 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x3C, 0x7F, 0xFF, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x02, // 76 - 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x19, 0x19, 0x19, 0x19, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x01, 0x01, 0x01, 0x81, 0x81, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // 77 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xF8, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x0C, 0x0C, 0x0C, 0x8C, 0x8C, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x18, 0x38, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x31, 0x1B, 0x0E, 0x0C, 0x98, 0xF0, 0xE0, 0xC0, 0x80, 0xD8, 0x7C, 0x26, 0x03, 0x01, 0x00, 0x80, 0xE0, 0x70, 0x18, 0x0C, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0F, 0x0D, 0x0E, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0xB8, 0xF0, 0xE0, 0xE0, 0xE0, 0xF0, 0xB8, 0x9F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF0, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 80 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 81 - 0x00, 0xE0, 0xF0, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x38, 0xF0, 0xE0, 0x00, 0x1F, 0x7F, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7F, 0x1F, 0x00, 0x00, 0x01, 0x07, 0x1E, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0F, 0x0F, 0x0F, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC8, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, // 84 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xDC, 0x86, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x81, 0xC1, 0xC1, 0xC1, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0F, 0x1F, 0x7F, 0x7F, 0x7E, 0x7C, 0xF0, 0xC0, 0x3F, 0xFF, 0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x38, 0x78, 0x78, 0xF8, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x3E, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, // 85 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFC, 0x00, 0x80, 0xF0, 0x7C, 0x1E, 0x07, 0x03, 0x00, 0x00, 0x40, 0xE0, 0xC0, 0xF8, 0xF0, 0xF6, 0xFC, 0x9C, 0x3E, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3F, 0x03, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x03, 0x03, 0x06, 0x00, 0x01, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x3C, 0xF8, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x19, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC2, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 87 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x30, 0x20, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x20, 0x30, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x38, 0x0E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0E, 0x38, 0xC0, 0x1F, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x1F, 0x00, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00, // 88 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 89 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x1F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xF3, 0xC3, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3C, 0x30, 0xB0, 0xF0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0x30, 0xB0, 0xF0, 0xF0, 0xB0, 0x3E, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0x7F, // 92 - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0xF8, 0x9C, 0x8C, 0x86, 0x86, 0x86, 0x86, 0x86, 0x8C, 0x9C, 0xF8, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x1F, 0x1B, 0x19, 0x19, 0x1F, 0x1F, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1F, 0x1F, 0x19, 0x19, 0x19, 0x1B, 0x1F, 0xFC, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 93 - 0xC0, 0xE0, 0x30, 0x18, 0x9C, 0xCC, 0xCC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xCC, 0x8C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x1C, 0x38, 0x70, 0x61, 0x61, 0xE1, 0xC1, 0xC1, 0xDD, 0xDD, 0xC1, 0xC1, 0xC1, 0xC1, 0xE1, 0x61, 0x60, 0x70, 0x30, 0x1C, 0x0F, 0x07, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 95 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x09, 0x38, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x6F, 0x61, 0x40, 0xC1, 0xC0, 0x80, 0x87, 0xBE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x61, 0x61, 0x63, 0x33, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 96 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC0, 0xFF, 0x7F, // 97 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0xF0, 0xB0, 0x98, 0x08, 0x00, 0x00, 0x00, 0x08, 0x18, 0x98, 0xF0, 0xE0, 0x60, 0x40, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 98 - 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xBE, 0x86, 0x86, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x83, 0x86, 0x9C, 0xB8, 0xF3, 0xE7, 0xC6, 0x06, 0x06, 0x06, 0x06, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, // 99 - 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xF6, 0x76, 0x06, 0x06, 0x06, // 100 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x83, 0x03, 0x3F, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x71, 0x61, 0xC0, 0xC0, 0xC0, 0xE1, 0x61, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, // 101 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFC, 0xF8, 0xFC, 0x0C, 0x6C, 0x6C, 0x6D, 0x6D, 0x6D, 0x6D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFD, 0xF9, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x60, 0x7F, 0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 104 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1C, 0x38, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x18, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 105 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC4, 0xDE, 0xF3, 0x01, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x81, 0x01, 0x01, 0x00, 0x00, 0x01, 0x73, 0xDE, 0xCC, 0xC0, 0x80, 0x1F, 0x3F, 0x20, 0xA0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x39, 0x60, 0x60, 0x60, 0x60, 0x60, 0x31, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xA0, 0x20, 0x3F, 0x1F, 0x00, 0x00, 0x02, 0x07, 0x0D, 0x18, 0x30, 0x20, 0x30, 0x18, 0x38, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x70, 0x18, 0x30, 0x20, 0x30, 0x18, 0x0D, 0x07, 0x02, 0x00, 0x00, // 106 - 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x61, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x3E, 0x7F, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x06, // 107 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 108 - 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x07, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // 109 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xB0, 0x18, 0x18, 0x30, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x86, 0xC3, 0xE1, 0x70, 0x38, 0x19, 0x0F, 0x06, 0x03, 0x01, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0xF8, 0x9C, 0x0E, 0x87, 0xC3, 0xE1, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x04, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F, 0xFB, 0xFB, 0x1B, 0x1B, 0x1B, 0x9B, 0x9B, 0x1B, 0x1B, 0x9B, 0x9B, 0x1B, 0x1B, 0x9B, 0x9B, 0x1B, 0x1B, 0xFB, 0xFB, 0x1F, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xDF, 0xDF, 0xC0, 0xC0, 0xDF, 0xDF, 0xC0, 0xC0, 0xDF, 0xDF, 0xC0, 0xC0, 0xFF, 0x7F, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x38, 0x70, 0x60, 0x60, 0x60, 0x70, 0x38, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x06, 0x03, 0x03, 0x03, 0x01, 0xE3, 0xFF, 0xE3, 0x01, 0x03, 0x03, 0x03, 0x06, 0x1C, 0xF8, 0xF0, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xDF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 112 - 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE0, 0xE0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x0F, 0x3F, 0x70, 0x61, 0xC3, 0xC6, 0xC6, 0xC6, 0xC3, 0x61, 0x70, 0x3F, 0x0F, // 113 - 0x00, 0x00, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0x1F, 0x07, 0x03, 0x81, 0xE1, 0x71, 0xF0, 0xE0, 0x80, 0xC0, 0xE0, 0x60, 0xC1, 0x81, 0x03, 0x07, 0x1F, 0xFC, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC3, 0x7E, 0x38, 0xF0, 0xC1, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x81, 0xE1, 0x78, 0x7E, 0xC7, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1E, 0x1E, 0xDE, 0xDE, 0xDE, 0x1E, 0x1E, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 115 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x01, 0x03, 0x06, 0x1C, 0x78, 0xF0, 0x80, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0xE0, 0xF1, 0x3B, 0x1E, 0x0C, 0x70, 0x80, 0x3F, 0xFF, 0xE1, 0x03, 0x03, 0x06, 0x0E, 0x0C, 0x0C, 0x18, 0x18, 0x98, 0xF0, 0x7F, 0x3F, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x7F, 0xFF, 0x98, 0x18, 0x08, 0xCC, 0xFC, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x18, 0x38, 0x30, 0x78, 0x6C, 0x66, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xFE, 0xDF, 0x60, 0x60, 0x60, 0x30, 0x31, 0x1B, 0x0E, 0x07, 0x03, 0x00, 0x00, // 117 - 0xE0, 0xE0, 0x60, 0x60, 0x60, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x07, 0x1F, 0x3C, 0x70, 0x60, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xDF, 0x60, 0x70, 0x3C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC1, 0xC3, 0xC3, 0xFF, 0xFF, 0xC3, 0xC3, 0xC1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x3C, 0xF8, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x19, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC2, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 119 - 0x40, 0x60, 0x70, 0xF8, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0xFF, 0xFF, 0x70, 0x30, 0x10, // 120 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 121 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0x80, 0x02, 0x06, 0x0E, 0x1F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 122 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1E, 0x30, 0x30, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3F, 0x32, 0x30, 0x30, 0x30, 0x30, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xC4, 0x30, 0x30, 0xCE, 0xCE, 0x30, 0x30, 0xC4, 0xCE, 0x10, 0x30, 0x10, 0xCE, 0xC4, 0x30, 0x30, 0xCE, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 123 - 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0x01, 0x0F, 0x3E, 0x38, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x06, 0xFC, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0x98, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x87, 0xC3, 0xE0, 0x7F, 0x3F, 0x06, 0x0B, 0x11, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 127 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 128 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 129 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 130 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 131 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 132 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 133 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 134 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 135 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 136 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 137 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 138 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 139 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 140 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 141 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 142 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 143 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 144 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 145 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 146 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 147 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 148 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 149 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 150 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 151 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 152 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 153 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 154 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 155 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 156 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 157 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 158 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 159 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 161 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 162 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x30, 0x38, 0x18, 0x18, 0x18, 0x98, 0x98, 0x9C, 0x9C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC1, 0xFF, 0x1F, 0xC0, 0xE0, 0x30, 0x38, 0x18, 0x18, 0x18, 0x10, 0x31, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x98, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x98, 0xFF, 0x7F, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, // 163 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 164 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 165 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 166 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 167 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 168 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x30, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x98, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x77, 0x63, 0xC1, 0x80, 0x80, 0x00, 0x00, 0x3E, 0x7F, 0xE3, 0xC1, 0x80, 0x80, 0x80, 0xC1, 0xE3, 0x7F, 0x3E, 0x00, 0x00, 0x80, 0x80, 0xC1, 0x63, 0x77, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 169 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 170 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x60, 0xF0, 0xF0, 0x00, 0x00, 0x80, 0x88, 0x18, 0x18, 0x30, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x18, 0x31, 0xF1, 0xE3, 0x07, 0x1E, 0xF8, 0xE0, 0x00, 0x03, 0x0F, 0xFE, 0xF0, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x60, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x0C, 0xCE, 0xC7, 0x63, 0x70, 0x3C, 0x1F, 0x83, 0xC0, 0xE0, 0x78, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, // 171 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 172 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFE, 0xFE, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 173 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 174 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 175 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 176 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 177 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 178 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 179 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 180 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 181 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 182 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 183 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 184 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 185 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 186 - 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x0C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x00, 0xF0, 0xF0, 0x03, 0x0F, 0x3C, 0x73, 0x67, 0xEE, 0xDC, 0xD8, 0xD8, 0xDC, 0xEE, 0x67, 0x73, 0x3C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, // 187 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 188 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 189 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 190 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 191 - 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x1F, 0x3F, 0x60, 0x60, 0x60, 0x60, 0x20, 0x30, 0xFE, 0xFF, 0x7B, 0x19, 0x0D, 0x0D, 0x87, 0x87, 0x87, 0x87, 0x87, 0x0D, 0x0D, 0x19, 0x73, 0xFF, 0xFE, 0x30, 0x60, 0x60, 0x60, 0x60, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x3C, 0x7E, 0xC3, 0xC3, 0x81, 0x81, 0x81, 0xC3, 0xC3, 0x7E, 0x3C, 0x00, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 192 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x8C, 0xC6, 0xE3, 0x7F, 0x7F, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x18, 0x1C, 0x0C, 0xC6, 0xE3, 0x71, 0x38, 0x1C, 0x0E, 0x87, 0xC3, 0x61, 0x31, 0x1B, 0x0E, 0x06, 0x03, 0x01, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x0E, 0x0F, 0x07, 0x04, 0x06, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 193 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 194 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x8C, 0x06, 0x03, 0x3F, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x98, 0xCC, 0xE6, 0x63, 0x31, 0xB0, 0x90, 0x98, 0x98, 0x9F, 0x8F, 0x06, 0x04, 0x88, 0xD0, 0x60, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x06, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x06, 0x03, 0x01, 0x00, 0x00, // 195 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xBF, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x8F, 0xFE, 0xF0, 0x80, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0x1C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x38, 0x18, 0x1E, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 196 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 197 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 198 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0E, 0x1F, 0x3F, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x07, 0x03, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // 199 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x1C, 0x1E, 0x03, 0x01, 0x01, 0x41, 0xC1, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x1C, 0xF8, 0xE0, 0x07, 0x1F, 0x38, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x01, 0x0F, 0xFF, 0xF3, 0x0E, 0x3C, 0xF0, 0x80, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1E, 0x37, 0x67, 0xC0, 0x80, 0x43, 0x27, 0x16, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 200 - 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9E, 0x9F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0xF8, 0xFC, 0x0E, 0x03, 0x03, 0x81, 0xC1, 0x71, 0x31, 0x1B, 0x1B, 0x0E, 0x0C, 0x0D, 0x0D, 0x0C, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x38, 0x3C, 0x0F, 0x07, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x38, 0xF0, 0xC0, 0x0F, 0x3F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x1F, 0x07, // 201 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 202 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x0E, 0x1C, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3C, 0xF0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xDE, 0xF8, 0x01, 0x07, 0xFF, 0xF8, 0x01, 0x07, 0x0E, 0x1C, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCC, 0xEE, 0x67, 0x73, 0x31, 0x1C, 0x0E, 0x07, 0x01, // 203 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xCC, 0xD8, 0x70, 0x7F, 0x7F, 0x60, 0xC0, 0xC0, 0x81, 0x81, 0x03, 0xFF, 0xFF, 0x01, 0x81, 0x81, 0xC0, 0x60, 0x7F, 0x7F, 0x70, 0xD8, 0xD8, 0x8C, 0x89, 0x98, 0xD8, 0xF0, 0xE0, 0xE0, 0x30, 0x30, 0x18, 0x0D, 0x0D, 0x07, 0xFF, 0xFF, 0x07, 0x0D, 0x19, 0x18, 0x30, 0xF0, 0xE0, 0xF0, 0xD8, 0x98, 0x89, 0x01, 0x01, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x18, 0x18, 0x0C, 0x0C, 0xFF, 0xFF, 0x0C, 0x08, 0x18, 0x10, 0x00, 0x07, 0x07, 0x00, 0x00, 0x01, 0x01, // 204 - 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x01, 0xF1, 0xFC, 0x0E, 0x03, 0x01, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF1, 0x01, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x03, 0x06, 0x08, 0x08, 0x8F, 0x8F, 0x08, 0x08, 0x04, 0x06, 0x03, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 205 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 206 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xC3, 0xF9, 0x9F, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x1C, 0x1E, 0x1B, 0x19, 0x18, 0x18, 0xD8, 0xF8, 0x18, 0x00, 0x01, 0x81, 0xC1, 0x61, 0x31, 0x19, 0x0D, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x7E, 0x37, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 207 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 208 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 209 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x78, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1C, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1C, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x0C, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, // 210 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB8, 0xBC, 0xE6, 0xC6, 0xC6, 0xFC, 0xBC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, // 211 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 212 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x38, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x38, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0E, 0x18, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x7C, 0x67, 0x61, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x63, 0x6E, 0x7C, 0x70, 0x60, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x73, 0xE3, 0xC3, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xDB, 0xDB, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x73, 0x3B, 0x0F, 0x07, 0x03, // 213 - 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x78, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x6C, 0x78, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 214 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 215 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 216 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x61, 0x33, 0x1F, 0x0E, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 217 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0xC6, 0xCE, 0x1C, 0x18, 0x01, 0x07, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x07, 0x01, 0x18, 0x1C, 0xCE, 0xC6, 0x62, 0x60, 0x60, 0x00, 0x04, 0x84, 0xC4, 0xC4, 0x64, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x64, 0xC4, 0xC4, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x07, 0x03, 0x60, 0x7C, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0C, 0x3C, 0x70, 0x03, 0x07, 0x0E, 0x1C, 0x08, 0x00, 0x00, 0x00, // 218 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 219 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x0F, 0x0F, // 220 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 221 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 222 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 223 - 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 224 - 0xC0, 0xE0, 0x60, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x98, 0xCC, 0xC6, 0xC3, 0xC1, 0x80, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x03, 0x01, 0x00, 0x1E, 0x7F, 0xE3, 0x80, 0x80, 0x80, 0x80, 0xE3, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x04, // 225 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 226 - 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x03, 0x86, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0xFF, 0xFF, 0x60, 0xD0, 0x88, 0x04, 0x06, 0x8F, 0x9F, 0x98, 0x98, 0x90, 0xB0, 0xB0, 0x61, 0xE3, 0xC6, 0x8C, 0x98, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 227 - 0x00, 0x38, 0x3C, 0x6E, 0xC6, 0xC6, 0xBE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xFC, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x30, 0x10, 0x18, 0x18, 0x08, 0x0C, 0x04, 0x1F, 0x1F, 0x18, 0x08, 0x0C, 0x04, 0x06, 0x02, 0x03, 0x03, 0x01, 0x01, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 228 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 229 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 230 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x78, 0x0C, 0x06, 0x06, 0x06, 0x07, 0x03, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x1E, 0x18, 0x70, 0xE0, 0x80, 0x1F, 0x7F, 0xE1, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x1C, 0x1E, 0xFB, 0xF9, 0x00, 0x00, 0xF1, 0x7B, 0x1A, 0x1C, 0x9C, 0x98, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0xE0, 0xFC, 0x7F, 0x39, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 231 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x06, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0x7C, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x00, // 232 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xF0, 0x38, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x18, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x38, 0x18, 0x0C, 0x0C, 0x0E, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0xF8, 0xF0, 0x07, 0x1F, 0x38, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 233 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 234 - 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x78, 0x7E, 0x33, 0x31, 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x30, 0x30, 0x31, 0x33, 0x6F, 0x7C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0xC0, 0xC0, 0xC0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 235 - 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x01, 0xF9, 0xFE, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x0E, 0xFC, 0xF9, 0x01, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x31, 0x07, 0x0F, 0x0C, 0x18, 0x98, 0x98, 0x18, 0x1C, 0x0C, 0x07, 0x03, 0x31, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 236 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x3E, 0xF6, 0x86, 0x0C, 0x1C, 0x18, 0x30, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9F, 0xFE, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x18, 0x1C, 0x0C, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x38, 0x1F, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 237 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 238 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3E, 0x07, 0x07, 0x3E, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x3E, 0x07, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x07, 0x3E, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7C, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7C, 0xE0, 0x80, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, // 239 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 240 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 241 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7C, 0x1E, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0x3F, 0x1C, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x1C, 0x3F, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x1E, 0x7C, 0xF0, 0x80, 0x1F, 0xFF, 0xE0, 0x80, 0xC0, 0xC0, 0xEF, 0xFF, 0xF0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0xEF, 0xC0, 0xC0, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x6F, 0x63, 0xC1, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0x63, 0x6F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, // 242 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x70, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x70, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0xC1, 0xF0, 0xE0, 0x81, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x81, 0xF0, 0xE0, 0x81, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x08, 0x0C, 0x0C, 0x0C, 0x04, 0x06, 0x03, 0x01, 0x00, 0x01, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x04, 0x06, 0x03, 0x03, 0x00, 0x01, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, // 243 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 244 - 0x80, 0xE0, 0xC0, 0x80, 0x04, 0x0C, 0x1E, 0x36, 0xE6, 0xC4, 0x0C, 0x1C, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x38, 0x31, 0x63, 0x66, 0x66, 0x63, 0x61, 0x60, 0xE0, 0xC0, 0x8F, 0x1F, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x0E, 0x07, 0x03, // 245 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x0E, 0x06, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x1E, 0x7C, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x3C, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3C, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xDE, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC7, 0xDE, 0xF0, 0xC0, // 246 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 247 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 248 - 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x1B, 0x31, 0x60, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x80, 0xC0, 0xE0, 0x71, 0x3A, 0x1C, 0xE0, 0xB0, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0C, 0x18, 0xB0, 0xE0, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, // 249 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x1F, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, // 250 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 251 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x30, 0x70, 0xE0, 0xC0, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x18, 0x1C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00 // 252 - -}; - -#endif + + +/* + * IconWorks_32pt + * + * created with FontCreator 4.3 + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : IconWorks_32pt.h + * Date : 07.03.2019 + * Font size in bytes : 138819 + * Font width : 10 + * Font height : 32 + * Font first char : 32 + * Font last char : 253 + * Font used chars : 221 + */ + +#include +#include + +#ifndef ICONWORKS_32PT_H +#define ICONWORKS_32PT_H + +#define ICONWORKS_32PT_WIDTH 10 +#define ICONWORKS_32PT_HEIGHT 32 + +static const uint8_t IconWorks_32pt[] PROGMEM = +{ + 0x1E, 0x43, // size + 0x0A, // width + 0x20, // height + 0x20, // first char + 0xDD, // char count + + // char widths + 0x12, 0x1E, 0x1D, 0x1D, 0x11, 0x08, 0x1D, 0x13, 0x1E, 0x1F, + 0x1B, 0x1D, 0x1D, 0x15, 0x1D, 0x1E, 0x1F, 0x1C, 0x1D, 0x1D, + 0x1C, 0x1B, 0x1F, 0x17, 0x17, 0x19, 0x1D, 0x1D, 0x1D, 0x1F, + 0x1D, 0x1F, 0x1D, 0x16, 0x16, 0x1E, 0x18, 0x1D, 0x1A, 0x1D, + 0x1D, 0x1D, 0x1D, 0x1A, 0x1A, 0x19, 0x1B, 0x19, 0x13, 0x14, + 0x13, 0x14, 0x15, 0x1D, 0x1C, 0x1D, 0x1C, 0x1D, 0x20, 0x1F, + 0x16, 0x1A, 0x18, 0x15, 0x1D, 0x16, 0x16, 0x18, 0x19, 0x1F, + 0x1A, 0x20, 0x1D, 0x1D, 0x1D, 0x1A, 0x20, 0x1A, 0x1A, 0x17, + 0x13, 0x0D, 0x1C, 0x15, 0x14, 0x1D, 0x21, 0x1D, 0x13, 0x1D, + 0x20, 0x20, 0x20, 0x18, 0x19, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, + 0x08, 0x1B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1D, 0x08, 0x20, + 0x08, 0x15, 0x20, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x08, 0x08, 0x08, 0x08, + 0x20, 0x20, 0x08, 0x1F, 0x1D, 0x08, 0x08, 0x1E, 0x20, 0x20, + 0x08, 0x15, 0x19, 0x1B, 0x08, 0x15, 0x08, 0x08, 0x20, 0x1F, + 0x08, 0x21, 0x15, 0x08, 0x08, 0x1C, 0x1B, 0x08, 0x12, 0x08, + 0x08, 0x08, 0x1D, 0x20, 0x08, 0x20, 0x1A, 0x08, 0x08, 0x20, + 0x20, 0x20, 0x08, 0x1D, 0x1B, 0x18, 0x08, 0x14, 0x08, 0x08, + 0x1D, 0x20, 0x08, 0x1B, 0x20, 0x08, 0x08, 0x16, 0x1D, 0x08, + 0x18, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0xC0, 0xE0, 0x78, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x70, 0x70, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x78, 0xF0, 0xC0, 0x0F, 0x7F, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x38, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0E, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3E, 0x1E, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x3C, 0x6C, 0xCC, 0x8C, 0x8C, 0x0C, 0x0C, 0x0E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x8C, 0x8C, 0xCC, 0x6C, 0x7C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0x3F, 0x02, 0x80, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0x80, 0x80, 0x1F, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x70, 0x30, 0x30, 0xF0, 0xE0, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x08, 0x18, 0x10, 0x30, 0xA1, 0xE1, 0x41, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0xF0, 0xF8, 0x9C, 0x0C, 0x07, 0x03, 0x00, 0xC0, 0xE0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x0E, 0x38, 0xE0, 0xC0, 0x00, 0x07, 0x7F, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x3C, 0xF0, 0xE0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1C, 0x30, 0x1B, 0x1F, 0x0C, 0x00, // 35 + 0x80, 0xE0, 0x78, 0x18, 0x0C, 0x0E, 0x06, 0x86, 0x86, 0x86, 0x06, 0x0C, 0x0C, 0x18, 0x78, 0xE0, 0x80, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x0F, 0x0F, 0x19, 0x19, 0x19, 0x0F, 0x0F, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x1F, 0x7C, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 37 + 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x60, 0xE0, 0xE0, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0x40, 0xE0, 0xE0, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0xFE, 0xFE, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0F, 0x0F, 0x04, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, // 38 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x8E, 0xFC, 0xF8, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x03, 0x01, 0x01, 0x00, 0xF8, 0xFC, 0x0C, 0xFC, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x0F, 0x1C, 0x38, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x1E, 0x0F, 0x03, // 39 + 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xC0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xC0, 0xCF, 0xDF, 0xD8, 0xD8, 0xD8, 0xD8, 0xDF, 0xCF, 0xC0, // 40 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x20, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, // 41 + 0xE0, 0xE0, 0x30, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x1C, 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xE0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x01, 0x0F, 0x3E, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0E, 0x1C, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x87, 0xC0, 0xE0, 0x30, 0x38, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xC3, 0x87, 0x06, 0x06, 0x76, 0x76, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x70, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xF0, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0F, 0x07, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0F, 0x07, // 46 + 0x60, 0xF0, 0xF0, 0x98, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE3, 0xE7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE7, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x31, 0x1B, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xE6, 0xE6, 0xB6, 0xD0, 0xD8, 0xD8, 0xC8, 0xCC, 0xCF, 0xCF, 0x03, 0x86, 0xCC, 0x78, 0x30, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x78, 0x0E, 0x07, 0x03, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0E, 0x1C, 0xF8, 0xC0, 0x7F, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x01, 0x03, 0x0E, 0x1C, 0x18, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1E, 0x1E, 0x1F, 0x11, 0x00, 0x00, // 49 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x07, 0x0F, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x71, 0x33, 0x3F, 0x1E, 0x0E, 0x07, 0x03, 0x00, 0x00, // 50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x3F, 0xFF, 0xC6, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xC6, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xFC, 0xFC, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x07, 0x03, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0F, 0x1F, 0x3F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x3F, 0x1F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0x7F, 0xFF, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x62, 0x36, 0x1E, 0x1E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x38, 0x1C, 0x8E, 0xC6, 0x63, 0x33, 0x31, 0x19, 0x19, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x19, 0x39, 0x71, 0x71, 0xE3, 0xC6, 0x86, 0x0C, 0x18, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0E, 0x06, 0x87, 0xC3, 0x63, 0x63, 0x63, 0xC3, 0x87, 0x06, 0x0E, 0x1C, 0x18, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x0C, 0x0C, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x84, 0x0C, 0x0C, 0x09, 0x19, 0x33, 0x63, 0xC6, 0x8C, 0x1C, 0x38, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x30, 0x31, 0xE1, 0xC1, 0x03, 0x06, 0x1C, 0xF8, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0x03, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x1F, // 55 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x8C, 0xC6, 0x63, 0x33, 0x19, 0x09, 0x0C, 0x0C, 0x84, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x00, 0xF8, 0xFE, 0x07, 0x01, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0xF0, 0x1C, 0x0E, 0x07, 0x03, 0xC1, 0xE1, 0x31, 0x31, 0x31, 0xE1, 0xC0, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 56 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x3C, 0xBE, 0x87, 0xC3, 0xE1, 0x30, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0x07, 0xE0, 0xF0, 0x18, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x0D, 0x8E, 0xC7, 0xEB, 0x7D, 0x3C, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0F, 0x07, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0xF0, 0xF0, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x3E, 0x37, 0x31, 0x30, 0xF0, 0xFE, 0x37, 0x31, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x31, 0x37, 0xFC, 0xF0, 0x31, 0x33, 0x36, 0x3C, 0xF0, 0xC0, 0x3F, 0xFF, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x18, 0x30, 0x30, 0x63, 0x7E, 0x78, 0xE0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0x78, 0x7E, 0x23, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDC, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x7C, 0x7C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 62 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x20, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x10, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDC, 0xF0, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xCF, 0x0C, 0x0C, 0xFC, 0xF8, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC0, 0xC0, 0xFF, 0x7F, // 64 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 65 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x33, 0x33, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC3, 0xC3, 0xC0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC0, 0xFF, 0x7F, // 66 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x9F, 0xBF, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB1, 0xB3, 0xB3, 0xB6, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x99, 0xC0, 0xE3, 0x33, 0x18, 0x0C, 0x9E, 0xF3, 0xE7, 0x7E, 0x3C, 0x18, 0x7F, 0xFF, 0xC0, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0x00, 0x00, 0xF0, 0xFC, 0xCE, 0xC7, 0xC3, 0x61, 0x30, 0x18, 0x0C, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, // 67 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x32, 0x34, 0x38, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x18, 0x18, 0x18, 0xFE, 0x18, 0x18, 0x18, // 68 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 69 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xEF, 0xEF, 0xEF, 0xEF, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 70 + 0xC0, 0xE0, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 71 + 0xC0, 0xE0, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x1E, 0x3E, 0x33, 0x63, 0x41, 0x00, 0x00, 0x61, 0x63, 0x33, 0x1E, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 72 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x70, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x0E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFE, 0xC0, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x2C, 0x6C, 0x6C, 0x6C, 0x2C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0F, 0x0F, 0x0C, // 74 + 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x3C, 0x7F, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x04, // 75 + 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x3C, 0x7F, 0xFF, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x02, // 76 + 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x19, 0x19, 0x19, 0x19, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x01, 0x01, 0x01, 0x81, 0x81, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // 77 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xF8, 0xFE, 0xFF, 0x03, 0x03, 0x03, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x03, 0x03, 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x0C, 0x0C, 0x0C, 0x8C, 0x8C, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x18, 0x38, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x31, 0x1B, 0x0E, 0x0C, 0x98, 0xF0, 0xE0, 0xC0, 0x80, 0xD8, 0x7C, 0x26, 0x03, 0x01, 0x00, 0x80, 0xE0, 0x70, 0x18, 0x0C, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0F, 0x0D, 0x0E, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0xB8, 0xF0, 0xE0, 0xE0, 0xE0, 0xF0, 0xB8, 0x9F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF0, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 81 + 0x00, 0xE0, 0xF0, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x38, 0xF0, 0xE0, 0x00, 0x1F, 0x7F, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7F, 0x1F, 0x00, 0x00, 0x01, 0x07, 0x1E, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0F, 0x0F, 0x0F, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC8, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, // 84 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xDC, 0x86, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x81, 0xC1, 0xC1, 0xC1, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0F, 0x1F, 0x7F, 0x7F, 0x7E, 0x7C, 0xF0, 0xC0, 0x3F, 0xFF, 0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x38, 0x78, 0x78, 0xF8, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x3E, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFC, 0x00, 0x80, 0xF0, 0x7C, 0x1E, 0x07, 0x03, 0x00, 0x00, 0x40, 0xE0, 0xC0, 0xF8, 0xF0, 0xF6, 0xFC, 0x9C, 0x3E, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3F, 0x03, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x03, 0x03, 0x06, 0x00, 0x01, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x3C, 0xF8, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x19, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC2, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 87 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x30, 0x20, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x20, 0x30, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x38, 0x0E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0E, 0x38, 0xC0, 0x1F, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x1F, 0x00, 0x00, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00, // 88 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 89 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x1F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xF3, 0xC3, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3C, 0x30, 0xB0, 0xF0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0x30, 0xB0, 0xF0, 0xF0, 0xB0, 0x3E, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0x7F, // 92 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0xF8, 0x9C, 0x8C, 0x86, 0x86, 0x86, 0x86, 0x86, 0x8C, 0x9C, 0xF8, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x1F, 0x1B, 0x19, 0x19, 0x1F, 0x1F, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1F, 0x1F, 0x19, 0x19, 0x19, 0x1B, 0x1F, 0xFC, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 93 + 0xC0, 0xE0, 0x30, 0x18, 0x9C, 0xCC, 0xCC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xCC, 0x8C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x1C, 0x38, 0x70, 0x61, 0x61, 0xE1, 0xC1, 0xC1, 0xDD, 0xDD, 0xC1, 0xC1, 0xC1, 0xC1, 0xE1, 0x61, 0x60, 0x70, 0x30, 0x1C, 0x0F, 0x07, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 95 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x09, 0x38, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x6F, 0x61, 0x40, 0xC1, 0xC0, 0x80, 0x87, 0xBE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x61, 0x61, 0x63, 0x33, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 96 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC0, 0xFF, 0x7F, // 97 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0xF0, 0xB0, 0x98, 0x08, 0x00, 0x00, 0x00, 0x08, 0x18, 0x98, 0xF0, 0xE0, 0x60, 0x40, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 98 + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xBE, 0x86, 0x86, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x83, 0x86, 0x9C, 0xB8, 0xF3, 0xE7, 0xC6, 0x06, 0x06, 0x06, 0x06, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, // 99 + 0xFC, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xF6, 0x76, 0x06, 0x06, 0x06, // 100 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x83, 0x03, 0x3F, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x71, 0x61, 0xC0, 0xC0, 0xC0, 0xE1, 0x61, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, // 101 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x66, 0x66, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFC, 0xF8, 0xFC, 0x0C, 0x6C, 0x6C, 0x6D, 0x6D, 0x6D, 0x6D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFD, 0xF9, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x60, 0x7F, 0x3F, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 104 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1C, 0x38, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x18, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC4, 0xDE, 0xF3, 0x01, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x81, 0x01, 0x01, 0x00, 0x00, 0x01, 0x73, 0xDE, 0xCC, 0xC0, 0x80, 0x1F, 0x3F, 0x20, 0xA0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x39, 0x60, 0x60, 0x60, 0x60, 0x60, 0x31, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xA0, 0x20, 0x3F, 0x1F, 0x00, 0x00, 0x02, 0x07, 0x0D, 0x18, 0x30, 0x20, 0x30, 0x18, 0x38, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF0, 0x70, 0x18, 0x30, 0x20, 0x30, 0x18, 0x0D, 0x07, 0x02, 0x00, 0x00, // 106 + 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x30, 0x30, 0x60, 0x60, 0x61, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x3E, 0x7F, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x06, // 107 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 108 + 0xF0, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x07, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xB0, 0x18, 0x18, 0x30, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x86, 0xC3, 0xE1, 0x70, 0x38, 0x19, 0x0F, 0x06, 0x03, 0x01, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0xF8, 0x9C, 0x0E, 0x87, 0xC3, 0xE1, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x04, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F, 0xFB, 0xFB, 0x1B, 0x1B, 0x1B, 0x9B, 0x9B, 0x1B, 0x1B, 0x9B, 0x9B, 0x1B, 0x1B, 0x9B, 0x9B, 0x1B, 0x1B, 0xFB, 0xFB, 0x1F, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xDF, 0xDF, 0xC0, 0xC0, 0xDF, 0xDF, 0xC0, 0xC0, 0xDF, 0xDF, 0xC0, 0xC0, 0xFF, 0x7F, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x38, 0x70, 0x60, 0x60, 0x60, 0x70, 0x38, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x06, 0x03, 0x03, 0x03, 0x01, 0xE3, 0xFF, 0xE3, 0x01, 0x03, 0x03, 0x03, 0x06, 0x1C, 0xF8, 0xF0, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xDF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 112 + 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE0, 0xE0, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x0F, 0x3F, 0x70, 0x61, 0xC3, 0xC6, 0xC6, 0xC6, 0xC3, 0x61, 0x70, 0x3F, 0x0F, // 113 + 0x00, 0x00, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0x1F, 0x07, 0x03, 0x81, 0xE1, 0x71, 0xF0, 0xE0, 0x80, 0xC0, 0xE0, 0x60, 0xC1, 0x81, 0x03, 0x07, 0x1F, 0xFC, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC3, 0x7E, 0x38, 0xF0, 0xC1, 0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x81, 0xE1, 0x78, 0x7E, 0xC7, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1E, 0x1E, 0xDE, 0xDE, 0xDE, 0x1E, 0x1E, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 115 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x01, 0x03, 0x06, 0x1C, 0x78, 0xF0, 0x80, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0xE0, 0xF1, 0x3B, 0x1E, 0x0C, 0x70, 0x80, 0x3F, 0xFF, 0xE1, 0x03, 0x03, 0x06, 0x0E, 0x0C, 0x0C, 0x18, 0x18, 0x98, 0xF0, 0x7F, 0x3F, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x7F, 0xFF, 0x98, 0x18, 0x08, 0xCC, 0xFC, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x18, 0x38, 0x30, 0x78, 0x6C, 0x66, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xFE, 0xDF, 0x60, 0x60, 0x60, 0x30, 0x31, 0x1B, 0x0E, 0x07, 0x03, 0x00, 0x00, // 117 + 0xE0, 0xE0, 0x60, 0x60, 0x60, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x07, 0x1F, 0x3C, 0x70, 0x60, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xDF, 0x60, 0x70, 0x3C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC1, 0xC3, 0xC3, 0xFF, 0xFF, 0xC3, 0xC3, 0xC1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x3C, 0xF8, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x19, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC2, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 119 + 0x40, 0x60, 0x70, 0xF8, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0xFF, 0xFF, 0x70, 0x30, 0x10, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0xC0, 0x1F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x7C, 0xF0, 0x80, 0x02, 0x06, 0x0E, 0x1F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1E, 0x30, 0x30, 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3F, 0x32, 0x30, 0x30, 0x30, 0x30, 0xE0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xC4, 0x30, 0x30, 0xCE, 0xCE, 0x30, 0x30, 0xC4, 0xCE, 0x10, 0x30, 0x10, 0xCE, 0xC4, 0x30, 0x30, 0xCE, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, // 123 + 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0x01, 0x0F, 0x3E, 0x38, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x06, 0xFC, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0x98, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x87, 0xC3, 0xE0, 0x7F, 0x3F, 0x06, 0x0B, 0x11, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 127 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 128 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 129 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 130 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 131 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 132 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 133 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 134 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 135 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 136 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 137 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 138 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 139 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 140 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 141 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 142 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 143 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 144 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 145 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 146 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 147 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 148 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 149 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 150 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 151 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 152 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 153 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 154 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 155 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 156 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 157 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 158 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 159 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 161 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 162 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x30, 0x38, 0x18, 0x18, 0x18, 0x98, 0x98, 0x9C, 0x9C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC1, 0xFF, 0x1F, 0xC0, 0xE0, 0x30, 0x38, 0x18, 0x18, 0x18, 0x10, 0x31, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x98, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x98, 0xFF, 0x7F, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, // 163 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 164 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 165 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 166 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 167 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 168 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x30, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x98, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x77, 0x63, 0xC1, 0x80, 0x80, 0x00, 0x00, 0x3E, 0x7F, 0xE3, 0xC1, 0x80, 0x80, 0x80, 0xC1, 0xE3, 0x7F, 0x3E, 0x00, 0x00, 0x80, 0x80, 0xC1, 0x63, 0x77, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 169 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 170 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x60, 0xF0, 0xF0, 0x00, 0x00, 0x80, 0x88, 0x18, 0x18, 0x30, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x18, 0x31, 0xF1, 0xE3, 0x07, 0x1E, 0xF8, 0xE0, 0x00, 0x03, 0x0F, 0xFE, 0xF0, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x60, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x00, 0x0C, 0xCE, 0xC7, 0x63, 0x70, 0x3C, 0x1F, 0x83, 0xC0, 0xE0, 0x78, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, // 171 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 172 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFE, 0xFE, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, // 173 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 174 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 175 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 176 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 177 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 178 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 179 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 180 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 181 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 182 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 183 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 184 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 185 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 186 + 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x0C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x00, 0xF0, 0xF0, 0x03, 0x0F, 0x3C, 0x73, 0x67, 0xEE, 0xDC, 0xD8, 0xD8, 0xDC, 0xEE, 0x67, 0x73, 0x3C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, // 187 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 188 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 189 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 190 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 191 + 0x00, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x00, 0x1F, 0x3F, 0x60, 0x60, 0x60, 0x60, 0x20, 0x30, 0xFE, 0xFF, 0x7B, 0x19, 0x0D, 0x0D, 0x87, 0x87, 0x87, 0x87, 0x87, 0x0D, 0x0D, 0x19, 0x73, 0xFF, 0xFE, 0x30, 0x60, 0x60, 0x60, 0x60, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x3C, 0x7E, 0xC3, 0xC3, 0x81, 0x81, 0x81, 0xC3, 0xC3, 0x7E, 0x3C, 0x00, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 192 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x8C, 0xC6, 0xE3, 0x7F, 0x7F, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x18, 0x1C, 0x0C, 0xC6, 0xE3, 0x71, 0x38, 0x1C, 0x0E, 0x87, 0xC3, 0x61, 0x31, 0x1B, 0x0E, 0x06, 0x03, 0x01, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x0E, 0x0F, 0x07, 0x04, 0x06, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 193 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 194 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x8C, 0x06, 0x03, 0x3F, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x98, 0xCC, 0xE6, 0x63, 0x31, 0xB0, 0x90, 0x98, 0x98, 0x9F, 0x8F, 0x06, 0x04, 0x88, 0xD0, 0x60, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x06, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x06, 0x03, 0x01, 0x00, 0x00, // 195 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xBF, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x8F, 0xFE, 0xF0, 0x80, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0x1C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x38, 0x18, 0x1E, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 196 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 197 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 198 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0E, 0x1F, 0x3F, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x07, 0x03, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // 199 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x1C, 0x1E, 0x03, 0x01, 0x01, 0x41, 0xC1, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0C, 0x1C, 0xF8, 0xE0, 0x07, 0x1F, 0x38, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x01, 0x0F, 0xFF, 0xF3, 0x0E, 0x3C, 0xF0, 0x80, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1E, 0x37, 0x67, 0xC0, 0x80, 0x43, 0x27, 0x16, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 200 + 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9E, 0x9F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0xF8, 0xFC, 0x0E, 0x03, 0x03, 0x81, 0xC1, 0x71, 0x31, 0x1B, 0x1B, 0x0E, 0x0C, 0x0D, 0x0D, 0x0C, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x38, 0x3C, 0x0F, 0x07, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C, 0x38, 0xF0, 0xC0, 0x0F, 0x3F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x1F, 0x07, // 201 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 202 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x0E, 0x1C, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3C, 0xF0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xDE, 0xF8, 0x01, 0x07, 0xFF, 0xF8, 0x01, 0x07, 0x0E, 0x1C, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCC, 0xEE, 0x67, 0x73, 0x31, 0x1C, 0x0E, 0x07, 0x01, // 203 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xCC, 0xD8, 0x70, 0x7F, 0x7F, 0x60, 0xC0, 0xC0, 0x81, 0x81, 0x03, 0xFF, 0xFF, 0x01, 0x81, 0x81, 0xC0, 0x60, 0x7F, 0x7F, 0x70, 0xD8, 0xD8, 0x8C, 0x89, 0x98, 0xD8, 0xF0, 0xE0, 0xE0, 0x30, 0x30, 0x18, 0x0D, 0x0D, 0x07, 0xFF, 0xFF, 0x07, 0x0D, 0x19, 0x18, 0x30, 0xF0, 0xE0, 0xF0, 0xD8, 0x98, 0x89, 0x01, 0x01, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x18, 0x18, 0x0C, 0x0C, 0xFF, 0xFF, 0x0C, 0x08, 0x18, 0x10, 0x00, 0x07, 0x07, 0x00, 0x00, 0x01, 0x01, // 204 + 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x01, 0xF1, 0xFC, 0x0E, 0x03, 0x01, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF1, 0x01, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x03, 0x06, 0x08, 0x08, 0x8F, 0x8F, 0x08, 0x08, 0x04, 0x06, 0x03, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 205 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 206 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xC3, 0xF9, 0x9F, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x1C, 0x1E, 0x1B, 0x19, 0x18, 0x18, 0xD8, 0xF8, 0x18, 0x00, 0x01, 0x81, 0xC1, 0x61, 0x31, 0x19, 0x0D, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x7E, 0x37, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 207 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 208 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 209 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x78, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1C, 0x78, 0xE0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1C, 0x38, 0xE0, 0x80, 0x00, 0x00, 0x0C, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0C, // 210 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB8, 0xBC, 0xE6, 0xC6, 0xC6, 0xFC, 0xBC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x38, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, // 211 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 212 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0E, 0x38, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x38, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0E, 0x18, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x7C, 0x67, 0x61, 0x60, 0x60, 0x60, 0x7F, 0x7F, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x63, 0x6E, 0x7C, 0x70, 0x60, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x73, 0xE3, 0xC3, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xDB, 0xDB, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x73, 0x3B, 0x0F, 0x07, 0x03, // 213 + 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x78, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x6C, 0x78, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0x7F, // 214 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 215 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 216 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x61, 0x33, 0x1F, 0x0E, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 217 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0xC6, 0xCE, 0x1C, 0x18, 0x01, 0x07, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x07, 0x01, 0x18, 0x1C, 0xCE, 0xC6, 0x62, 0x60, 0x60, 0x00, 0x04, 0x84, 0xC4, 0xC4, 0x64, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x64, 0xC4, 0xC4, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x07, 0x03, 0x60, 0x7C, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0C, 0x3C, 0x70, 0x03, 0x07, 0x0E, 0x1C, 0x08, 0x00, 0x00, 0x00, // 218 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 219 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x0F, 0x0F, // 220 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 221 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 222 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 223 + 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xFF, 0xFF, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 224 + 0xC0, 0xE0, 0x60, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x98, 0xCC, 0xC6, 0xC3, 0xC1, 0x80, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x03, 0x01, 0x00, 0x1E, 0x7F, 0xE3, 0x80, 0x80, 0x80, 0x80, 0xE3, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x04, // 225 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 226 + 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x03, 0x86, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0xFF, 0xFF, 0x60, 0xD0, 0x88, 0x04, 0x06, 0x8F, 0x9F, 0x98, 0x98, 0x90, 0xB0, 0xB0, 0x61, 0xE3, 0xC6, 0x8C, 0x98, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, // 227 + 0x00, 0x38, 0x3C, 0x6E, 0xC6, 0xC6, 0xBE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xFC, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x20, 0x30, 0x10, 0x18, 0x18, 0x08, 0x0C, 0x04, 0x1F, 0x1F, 0x18, 0x08, 0x0C, 0x04, 0x06, 0x02, 0x03, 0x03, 0x01, 0x01, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 228 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 229 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 230 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x78, 0x0C, 0x06, 0x06, 0x06, 0x07, 0x03, 0x00, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x1E, 0x18, 0x70, 0xE0, 0x80, 0x1F, 0x7F, 0xE1, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x1C, 0x1E, 0xFB, 0xF9, 0x00, 0x00, 0xF1, 0x7B, 0x1A, 0x1C, 0x9C, 0x98, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0x70, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0xE0, 0xFC, 0x7F, 0x39, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 231 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x3C, 0x0E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0E, 0x3C, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFC, 0x0E, 0x06, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0x7C, 0x00, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x00, // 232 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xF0, 0x38, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x18, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x38, 0x18, 0x0C, 0x0C, 0x0E, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0xF8, 0xF0, 0x07, 0x1F, 0x38, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x38, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 233 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 234 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x78, 0x7E, 0x33, 0x31, 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x30, 0x30, 0x31, 0x33, 0x6F, 0x7C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0xC0, 0xC0, 0xC0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 235 + 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x01, 0xF9, 0xFE, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x0E, 0xFC, 0xF9, 0x01, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x31, 0x07, 0x0F, 0x0C, 0x18, 0x98, 0x98, 0x18, 0x1C, 0x0C, 0x07, 0x03, 0x31, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 236 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x3E, 0xF6, 0x86, 0x0C, 0x1C, 0x18, 0x30, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9F, 0xFE, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x18, 0x1C, 0x0C, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x38, 0x1F, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 237 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 238 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3E, 0x07, 0x07, 0x3E, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x3E, 0x07, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x07, 0x3E, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x7C, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7C, 0xE0, 0x80, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, // 239 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 240 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 241 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7C, 0x1E, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0x3F, 0x1C, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x1C, 0x3F, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x1E, 0x7C, 0xF0, 0x80, 0x1F, 0xFF, 0xE0, 0x80, 0xC0, 0xC0, 0xEF, 0xFF, 0xF0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0xEF, 0xC0, 0xC0, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x6F, 0x63, 0xC1, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0x63, 0x6F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, // 242 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x70, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x70, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0xC1, 0xF0, 0xE0, 0x81, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x81, 0xF0, 0xE0, 0x81, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x08, 0x0C, 0x0C, 0x0C, 0x04, 0x06, 0x03, 0x01, 0x00, 0x01, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x04, 0x06, 0x03, 0x03, 0x00, 0x01, 0x03, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, // 243 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 244 + 0x80, 0xE0, 0xC0, 0x80, 0x04, 0x0C, 0x1E, 0x36, 0xE6, 0xC4, 0x0C, 0x1C, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x38, 0x31, 0x63, 0x66, 0x66, 0x63, 0x61, 0x60, 0xE0, 0xC0, 0x8F, 0x1F, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x0E, 0x07, 0x03, // 245 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x0E, 0x06, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x1E, 0x7C, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x3C, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3C, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xDE, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC7, 0xDE, 0xF0, 0xC0, // 246 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 247 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 248 + 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x1B, 0x31, 0x60, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x80, 0xC0, 0xE0, 0x71, 0x3A, 0x1C, 0xE0, 0xB0, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x80, 0xC0, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x01, 0x03, 0x07, 0x0C, 0x18, 0xB0, 0xE0, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x00, // 249 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x1F, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, // 250 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, // 251 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x30, 0x70, 0xE0, 0xC0, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x18, 0x1C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00 // 252 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/IconWorks_B_32pt.h b/lib/BrbDisplayBase/fonts/IconWorks_B_32pt.h index 4b66b90..7990316 100644 --- a/lib/BrbDisplayBase/fonts/IconWorks_B_32pt.h +++ b/lib/BrbDisplayBase/fonts/IconWorks_B_32pt.h @@ -1,291 +1,291 @@ - - -/* - * IconWorks_B_32pt - * - * created with FontCreator 4.3 - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : IconWorks_B_32pt.h - * Date : 07.03.2019 - * Font size in bytes : 151337 - * Font width : 10 - * Font height : 33 - * Font first char : 32 - * Font last char : 256 - * Font used chars : 224 - */ - -#include -#include - -#ifndef ICONWORKS_B_32PT_H -#define ICONWORKS_B_32PT_H - -#define ICONWORKS_B_32PT_WIDTH 10 -#define ICONWORKS_B_32PT_HEIGHT 33 - -static const uint8_t IconWorks_B_32pt[] PROGMEM = -{ - 0x4F, 0x29, // size - 0x0A, // width - 0x21, // height - 0x20, // first char - 0xE0, // char count - - // char widths - 0x14, 0x1F, 0x1E, 0x1E, 0x12, 0x09, 0x1E, 0x14, 0x1F, 0x20, - 0x1C, 0x1E, 0x1E, 0x16, 0x1E, 0x1F, 0x20, 0x1D, 0x1E, 0x1E, - 0x1D, 0x1C, 0x20, 0x18, 0x18, 0x1A, 0x1E, 0x1E, 0x1E, 0x20, - 0x1E, 0x20, 0x1E, 0x17, 0x17, 0x1F, 0x19, 0x1E, 0x1B, 0x1E, - 0x1E, 0x1E, 0x1E, 0x1B, 0x1B, 0x1A, 0x1C, 0x1A, 0x14, 0x15, - 0x14, 0x15, 0x16, 0x1E, 0x1D, 0x1E, 0x1D, 0x1E, 0x21, 0x20, - 0x17, 0x1B, 0x19, 0x16, 0x1E, 0x17, 0x17, 0x19, 0x1A, 0x20, - 0x1B, 0x21, 0x1E, 0x1E, 0x1E, 0x1B, 0x21, 0x1B, 0x1B, 0x18, - 0x14, 0x0E, 0x1D, 0x16, 0x15, 0x1E, 0x22, 0x1E, 0x14, 0x1E, - 0x21, 0x21, 0x21, 0x19, 0x1A, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x09, - 0x09, 0x1C, 0x09, 0x09, 0x09, 0x09, 0x09, 0x1E, 0x09, 0x21, - 0x09, 0x16, 0x21, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x11, 0x09, 0x09, 0x09, 0x09, - 0x21, 0x21, 0x09, 0x20, 0x1E, 0x09, 0x09, 0x1F, 0x21, 0x21, - 0x09, 0x16, 0x1A, 0x1C, 0x09, 0x16, 0x09, 0x09, 0x21, 0x20, - 0x09, 0x22, 0x16, 0x09, 0x09, 0x1D, 0x1C, 0x09, 0x13, 0x09, - 0x09, 0x09, 0x1E, 0x21, 0x09, 0x21, 0x1B, 0x09, 0x09, 0x21, - 0x21, 0x21, 0x09, 0x1E, 0x1C, 0x19, 0x09, 0x15, 0x09, 0x09, - 0x1E, 0x21, 0x09, 0x1C, 0x21, 0x09, 0x09, 0x17, 0x1E, 0x09, - 0x19, 0x09, 0x09, 0x09, - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 - 0xC0, 0xE0, 0xF8, 0x78, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x78, 0x70, 0x78, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x78, 0xF8, 0xF0, 0xC0, 0x0F, 0x7F, 0xFF, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFF, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x3C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0E, 0x0F, 0x07, 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, // 33 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3E, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x3C, 0x7C, 0xEC, 0xCC, 0x8C, 0x8C, 0x0C, 0x0E, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x8C, 0x8C, 0xCC, 0xEC, 0x7C, 0x7C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x3F, 0x82, 0xC0, 0xE0, 0x60, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x9F, 0xFF, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x18, 0x18, 0x30, 0xB1, 0xE1, 0xE1, 0x41, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0xF1, 0xF8, 0xFC, 0x9C, 0x0F, 0x07, 0x03, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0x38, 0x1C, 0x0E, 0x87, 0xC3, 0xE1, 0x70, 0x38, 0x3C, 0x1E, 0x0E, 0x3E, 0xF8, 0xE0, 0xC0, 0x07, 0x7F, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x3E, 0xFC, 0xF0, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3C, 0x3B, 0x1F, 0x1F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 - 0x80, 0xE0, 0xF8, 0x78, 0x1C, 0x0C, 0x0E, 0x86, 0x86, 0x86, 0x86, 0x0E, 0x0C, 0x1C, 0x78, 0xF8, 0xE0, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x0F, 0x0F, 0x1F, 0x19, 0x19, 0x1F, 0x0F, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0E, 0x0F, 0x0F, 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, // 36 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 - 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0xFF, 0xFE, 0xFE, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0F, 0x0F, 0x0F, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 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, // 38 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x8E, 0xFE, 0xFC, 0xF8, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0x0F, 0x03, 0x01, 0x01, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0x01, 0x03, 0x07, 0x0F, 0xFE, 0xFC, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x0F, 0x1F, 0x3C, 0x78, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x70, 0x78, 0x3E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xCF, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xDF, 0xCF, 0xCF, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xDF, 0xCF, 0xCF, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xDF, 0xCF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 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, // 41 - 0xE0, 0xE0, 0xF0, 0x30, 0x30, 0x30, 0x38, 0x18, 0x18, 0x1C, 0x0C, 0x0E, 0x06, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x01, 0x0F, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x1E, 0x0F, 0x07, 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, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x07, 0x87, 0xC7, 0xE0, 0xF0, 0x38, 0x18, 0x18, 0x18, 0x38, 0x38, 0xF0, 0xE3, 0xC7, 0x87, 0x06, 0x76, 0x76, 0x76, 0x06, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0xF0, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xF0, 0xFF, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xCF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 - 0x60, 0xF0, 0xF0, 0xF8, 0x9C, 0x0E, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE3, 0xE7, 0xE7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE7, 0xE7, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x71, 0x3B, 0x1F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xE6, 0xE6, 0xB6, 0xF6, 0xD8, 0xD8, 0xD8, 0xCC, 0xCF, 0xCF, 0xCF, 0x87, 0xCE, 0xFC, 0x78, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xE0, 0xE0, 0xE7, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x00, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x7E, 0x0F, 0x07, 0x07, 0x0F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0xFC, 0xF8, 0xC0, 0x7F, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0x1C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1E, 0x1F, 0x1F, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x0F, 0x0F, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x71, 0x73, 0x3F, 0x3E, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xC6, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xC6, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xFC, 0xFC, 0xFC, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x38, 0x1C, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0F, 0x1F, 0x3F, 0x7F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7F, 0x3F, 0x1F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0x7F, 0xFF, 0xFF, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE2, 0x76, 0x3E, 0x1E, 0x3E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xF0, 0x78, 0x3C, 0x9E, 0xCE, 0xE7, 0x73, 0x33, 0x39, 0x19, 0x19, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x19, 0x39, 0x79, 0x71, 0xF3, 0xE7, 0xC6, 0x8E, 0x1C, 0x78, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x18, 0x1C, 0x1E, 0x0E, 0x87, 0xC7, 0xE3, 0x63, 0x63, 0xE3, 0xC7, 0x86, 0x0E, 0x1E, 0x1C, 0x18, 0x01, 0x03, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x8C, 0x0C, 0x0D, 0x19, 0x3B, 0x73, 0xE7, 0xCE, 0x9C, 0x3C, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xE1, 0xF0, 0x30, 0x31, 0xF1, 0xE1, 0xC3, 0x07, 0x1E, 0xFC, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x01, 0x07, 0xFF, 0xFE, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x3C, 0x9C, 0xCE, 0xE7, 0x73, 0x3B, 0x19, 0x0D, 0x0C, 0x8C, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x00, 0xF8, 0xFE, 0xFF, 0x07, 0x01, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0xFC, 0x1E, 0x0F, 0x07, 0xC3, 0xE1, 0xF1, 0x31, 0x31, 0xF1, 0xE1, 0xC0, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 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, // 56 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x9C, 0xFE, 0xBF, 0xE7, 0xE3, 0xF1, 0x30, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x0C, 0x8F, 0xCF, 0xE7, 0xFF, 0x7F, 0x39, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x01, 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, // 57 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF8, 0xFC, 0xFE, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x3F, 0x37, 0x31, 0xF0, 0xFE, 0xFF, 0x37, 0x31, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x31, 0x37, 0xFF, 0xFC, 0xF1, 0x33, 0x37, 0x3E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1C, 0x38, 0x30, 0x73, 0x7F, 0x7E, 0xF8, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF8, 0x7E, 0x7F, 0x33, 0x38, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDF, 0xFC, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 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, // 61 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x7C, 0x7C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDF, 0xFC, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x70, 0x38, 0x1C, 0x1E, 0x0F, 0x07, 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, // 63 - 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xCF, 0xCF, 0x0C, 0xFC, 0xFC, 0xF8, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x9F, 0xBF, 0xBF, 0xB0, 0xB0, 0xB0, 0xB0, 0xB1, 0xB3, 0xB3, 0xB7, 0xBE, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x99, 0xD9, 0xE3, 0xF3, 0x3B, 0x1C, 0x9E, 0xFF, 0xF7, 0xFF, 0x7E, 0x3C, 0x18, 0x7F, 0xFF, 0xFF, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0x00, 0xF0, 0xFC, 0xFE, 0xCF, 0xC7, 0xE3, 0x71, 0x38, 0x1C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x18, 0x18, 0x18, 0xFE, 0xFE, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x8C, 0x8C, 0x0C, 0x0C, 0x0C, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x1E, 0x3E, 0x3F, 0x73, 0x63, 0x41, 0x00, 0x61, 0x63, 0x73, 0x3F, 0x1E, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x70, 0x78, 0x18, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFE, 0xC0, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x2C, 0x6C, 0x6C, 0x6C, 0x6C, 0x2C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 - 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x30, 0x38, 0x3C, 0x7F, 0xFF, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x30, 0x38, 0x3C, 0x7F, 0xFF, 0xFF, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 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, // 76 - 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x01, 0x19, 0x19, 0x19, 0x19, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x01, 0x01, 0x81, 0x81, 0x81, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x01, 0x01, 0x01, 0x01, 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, // 77 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xF8, 0xFE, 0xFF, 0xFF, 0x03, 0x03, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x03, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x8C, 0x0C, 0x0C, 0x8C, 0x8C, 0x8C, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 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, // 78 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x38, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x71, 0x3B, 0x1F, 0x0E, 0x9C, 0xF8, 0xF0, 0xE0, 0xC0, 0xD8, 0xFC, 0x7E, 0x27, 0x03, 0x01, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x1C, 0x0E, 0x87, 0xC3, 0xE1, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0F, 0x0F, 0x0D, 0x0E, 0x07, 0x07, 0x03, 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, // 79 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0xBF, 0xF8, 0xF0, 0xE0, 0xE0, 0xF0, 0xF8, 0xBF, 0x9F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0xFE, 0xFC, 0xF0, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 - 0x00, 0xE0, 0xF0, 0xF8, 0x3C, 0x1C, 0x0E, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x1F, 0x7F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7E, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x03, 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, 0x00, 0x00, // 82 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC8, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xDE, 0x87, 0x03, 0x01, 0x03, 0x03, 0x03, 0x83, 0xC1, 0xC1, 0xC1, 0xE1, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x06, 0x0F, 0x1F, 0x7F, 0x7F, 0x7F, 0x7E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x78, 0x78, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x7E, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x1F, 0x07, 0x03, 0x00, 0x40, 0xE0, 0xE0, 0xF8, 0xF8, 0xF6, 0xFE, 0xFC, 0xBE, 0x3E, 0x26, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0x3F, 0x03, 0xFC, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x03, 0x07, 0x06, 0x01, 0x81, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x06, 0x06, 0x07, 0x07, 0x03, 0x03, 0x01, 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, // 86 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x39, 0x1F, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE2, 0xC3, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x20, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x20, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3E, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0xF8, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x83, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x83, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1E, 0x3C, 0x78, 0x70, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x1F, 0x3F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFF, 0xF3, 0xC3, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xFF, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0x3C, 0xB0, 0xF0, 0xF0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0xB0, 0xF0, 0xF0, 0xF0, 0xBE, 0x3F, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0xF8, 0xFC, 0x9C, 0x8E, 0x86, 0x86, 0x86, 0x86, 0x8E, 0x9C, 0xFC, 0xF8, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFF, 0x1F, 0x1B, 0x19, 0x1F, 0x1F, 0x1F, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1F, 0x1F, 0x1F, 0x19, 0x19, 0x1B, 0x1F, 0xFF, 0xFC, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 - 0xC0, 0xE0, 0xF0, 0x38, 0x9C, 0xDC, 0xCC, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xCE, 0xCC, 0x9C, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0x71, 0x61, 0xE1, 0xE1, 0xC1, 0xDD, 0xDD, 0xDD, 0xC1, 0xC1, 0xC1, 0xE1, 0x61, 0x61, 0x70, 0x70, 0x3C, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x0B, 0x3D, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x7F, 0x6F, 0x61, 0xC1, 0xC1, 0xC0, 0x87, 0xBF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, 0x61, 0x63, 0x73, 0x3B, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0xF0, 0xF0, 0xB8, 0x98, 0x08, 0x00, 0x00, 0x08, 0x18, 0x98, 0xF8, 0xF0, 0xE0, 0x60, 0x40, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0xC3, 0xC3, 0xC0, 0xC0, 0xC3, 0xC3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 - 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xBE, 0xBE, 0x86, 0x86, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x87, 0x9E, 0xBC, 0xFB, 0xF7, 0xE7, 0xC6, 0x06, 0x06, 0x06, 0x07, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xFF, 0xFF, 0x7F, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 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, // 99 - 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xF6, 0xF6, 0x76, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x83, 0x3F, 0x3F, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x71, 0xE1, 0xC0, 0xC0, 0xE1, 0xE1, 0xFF, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0xFC, 0xF8, 0xFC, 0xFC, 0x6C, 0x6C, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFD, 0xFD, 0xF9, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0x7F, 0x7F, 0x3F, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x1C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC4, 0xDE, 0xFF, 0xF3, 0x01, 0x00, 0x00, 0x01, 0x81, 0xC1, 0xC0, 0xE0, 0x60, 0x60, 0xC0, 0xC0, 0xC1, 0x81, 0x01, 0x01, 0x00, 0x01, 0x73, 0xFF, 0xDE, 0xCC, 0xC0, 0x80, 0x1F, 0x3F, 0x3F, 0xA0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x79, 0x60, 0x60, 0x60, 0x60, 0x31, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xA0, 0x3F, 0x3F, 0x1F, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x1D, 0x38, 0x30, 0x30, 0x38, 0x38, 0xF8, 0xF0, 0x80, 0x80, 0x80, 0x80, 0xF0, 0xF0, 0x78, 0x38, 0x30, 0x30, 0x38, 0x1D, 0x0F, 0x07, 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, // 106 - 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x70, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x61, 0x61, 0x60, 0x70, 0x30, 0x38, 0x38, 0x3E, 0x7F, 0xFF, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 - 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 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, // 109 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xB8, 0x18, 0x38, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1C, 0x8E, 0xC7, 0xE3, 0xF1, 0x78, 0x39, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0x9E, 0x8F, 0xC7, 0xE3, 0xF1, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x0F, 0x06, 0x07, 0x07, 0x03, 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, // 110 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F, 0xFF, 0xFB, 0xFB, 0x1B, 0x1B, 0x9B, 0x9B, 0x9B, 0x1B, 0x9B, 0x9B, 0x9B, 0x1B, 0x9B, 0x9B, 0x9B, 0x1B, 0xFB, 0xFB, 0xFF, 0x1F, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xDF, 0xDF, 0xDF, 0xC0, 0xDF, 0xDF, 0xDF, 0xC0, 0xDF, 0xDF, 0xDF, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x70, 0x60, 0x60, 0x70, 0x78, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x1E, 0x07, 0x03, 0x03, 0x01, 0xE3, 0xFF, 0xFF, 0xE3, 0x01, 0x03, 0x03, 0x07, 0x1E, 0xFC, 0xF8, 0xF0, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xFF, 0xDF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0x00, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x3F, 0x7F, 0x71, 0xE3, 0xC7, 0xC6, 0xC6, 0xC7, 0xE3, 0x71, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 - 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xC0, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFF, 0x1F, 0x07, 0x83, 0xE1, 0xF1, 0xF1, 0xF0, 0xE0, 0xC0, 0xE0, 0xE0, 0xE1, 0xC1, 0x83, 0x07, 0x1F, 0xFF, 0xFC, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xFF, 0x3E, 0xF8, 0xF1, 0xC1, 0x00, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x81, 0xE1, 0xF9, 0x7E, 0xFF, 0xC7, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1E, 0xDE, 0xDE, 0xDE, 0xDE, 0x1E, 0x1E, 0x07, 0x07, 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, // 114 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFE, 0x0F, 0x07, 0x01, 0x00, 0x01, 0x03, 0x07, 0x1E, 0x7C, 0xF8, 0xF0, 0x80, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0xE0, 0xF1, 0xFB, 0x3F, 0x1E, 0x7C, 0xF0, 0x80, 0x3F, 0xFF, 0xFF, 0xE3, 0x07, 0x07, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x98, 0xF8, 0xFF, 0x7F, 0x3F, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x7F, 0xFF, 0xFF, 0x98, 0x18, 0xCC, 0xFC, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x38, 0x38, 0x78, 0x7C, 0x6E, 0xE7, 0xC3, 0xC1, 0xC0, 0xC0, 0xFE, 0xFF, 0xFF, 0x60, 0x60, 0x70, 0x31, 0x3B, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF8, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0x07, 0x1F, 0x3F, 0x7C, 0x70, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x70, 0x7C, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC1, 0xC3, 0xC3, 0xFF, 0xFF, 0xFF, 0xC3, 0xC3, 0xC1, 0x01, 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, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x1F, 0x39, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC3, 0xE2, 0x60, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 - 0x40, 0x60, 0x70, 0xF8, 0xF8, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x10, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x18, 0x10, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0x80, 0x02, 0x06, 0x0E, 0x1F, 0x3F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x3E, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3F, 0x3F, 0x32, 0x30, 0x30, 0x30, 0xF0, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xCE, 0xF4, 0x30, 0xFE, 0xCE, 0xFE, 0x30, 0xF4, 0xCE, 0xDE, 0x30, 0x30, 0xDE, 0xCE, 0xF4, 0x30, 0xFE, 0xCE, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 - 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x30, 0x30, 0x38, 0x18, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x18, 0x38, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x01, 0x0F, 0x3F, 0x3E, 0x38, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x3F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0xFE, 0xFC, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x98, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x06, 0x87, 0xC7, 0xE3, 0xFF, 0x7F, 0x3F, 0x06, 0x0F, 0x1B, 0x31, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0E, 0x0F, 0x0F, 0x07, 0x03, 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, // 126 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 127 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 128 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 129 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 130 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 131 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 132 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 133 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 134 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 135 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 136 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 137 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 138 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 139 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 140 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 141 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 142 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 143 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 144 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 145 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 146 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 147 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 148 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 149 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 150 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 151 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 152 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 153 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 154 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 155 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 156 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 157 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 158 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 159 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 161 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 162 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x38, 0x38, 0x18, 0x18, 0x98, 0x98, 0x9C, 0x9C, 0x9C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x1F, 0xC0, 0xE0, 0xF0, 0x38, 0x38, 0x18, 0x18, 0x18, 0x30, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x9C, 0x1C, 0x0C, 0x0C, 0x0C, 0x9C, 0xF8, 0xFF, 0x7F, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 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, // 163 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 164 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 165 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 166 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 167 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 168 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0xB8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xB8, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x7F, 0x77, 0xE3, 0xC1, 0x80, 0x80, 0x00, 0x3E, 0x7F, 0xFF, 0xE3, 0xC1, 0x80, 0x80, 0xC1, 0xE3, 0xFF, 0x7F, 0x3E, 0x00, 0x80, 0x80, 0xC1, 0xE3, 0x77, 0x7F, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x06, 0x06, 0x0E, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, 0x06, 0x06, 0x07, 0x03, 0x03, 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, // 169 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 170 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0x00, 0x80, 0x88, 0x98, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x39, 0xF1, 0xF3, 0xE7, 0x1F, 0xFE, 0xF8, 0xE0, 0x03, 0x0F, 0xFF, 0xFE, 0xF0, 0x1F, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x0C, 0xCE, 0xCF, 0xE7, 0x73, 0x7C, 0x3F, 0x9F, 0xC3, 0xE0, 0xF8, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x0C, 0x0C, 0x0E, 0x0E, 0x07, 0x07, 0x03, 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, // 171 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 172 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xCF, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFE, 0xFE, 0xFE, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 173 - 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 174 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 175 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 176 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 177 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 178 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 179 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 180 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 181 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 182 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 183 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 184 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 185 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 186 - 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0x03, 0x0F, 0x3F, 0x7F, 0x77, 0xEF, 0xFE, 0xD8, 0xD8, 0xDC, 0xFE, 0xEF, 0x77, 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 187 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 188 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 189 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 190 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 191 - 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x1C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x9C, 0x18, 0x18, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x1F, 0x3F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x30, 0xFE, 0xFF, 0xFF, 0x7B, 0x1D, 0x0D, 0x8F, 0x87, 0x87, 0x87, 0x87, 0x8F, 0x0D, 0x1D, 0x7B, 0xFF, 0xFF, 0xFE, 0x70, 0x60, 0x60, 0x60, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x3C, 0x7E, 0xFF, 0xC3, 0xC1, 0x81, 0x81, 0xC3, 0xC3, 0xFF, 0x7E, 0x3C, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 192 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x9C, 0xCE, 0xE7, 0xFF, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, 0xCE, 0xE7, 0xF3, 0x79, 0x3C, 0x1E, 0x8F, 0xC7, 0xE3, 0x71, 0x3B, 0x1F, 0x0E, 0x07, 0x03, 0x01, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0F, 0x0F, 0x07, 0x06, 0x06, 0x03, 0x03, 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, // 193 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 194 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x9C, 0x8E, 0x07, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0xB8, 0xDC, 0xEE, 0xE7, 0xF3, 0xB1, 0xB0, 0x98, 0x98, 0x9F, 0x9F, 0x8F, 0x0E, 0x8C, 0xD8, 0xF0, 0x60, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x06, 0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 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, // 195 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0xBF, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x8F, 0xFF, 0xFE, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0x1F, 0x1C, 0x38, 0x30, 0x30, 0x30, 0x38, 0x38, 0x1E, 0x1F, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 196 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 197 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 198 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1F, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x07, 0xFB, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF9, 0x03, 0x07, 0x0F, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xFE, 0x06, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 199 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x18, 0x1C, 0x1E, 0x3F, 0x03, 0x01, 0x41, 0xE3, 0xC7, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1C, 0xFC, 0xF8, 0xE0, 0x07, 0x1F, 0x3F, 0x78, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x01, 0x0F, 0xFF, 0xFF, 0xF7, 0x1E, 0xFC, 0xF0, 0x80, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1E, 0x3F, 0x77, 0xE7, 0xC0, 0xC3, 0x67, 0x37, 0x1E, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 200 - 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0x80, 0x9E, 0x9F, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0xF8, 0xFC, 0xFE, 0x0F, 0x03, 0x03, 0xC1, 0xF1, 0xF1, 0x3B, 0x1B, 0x0F, 0x0E, 0x0D, 0x0D, 0x0D, 0x1C, 0x38, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x38, 0x3C, 0x7F, 0x0F, 0x07, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x3C, 0xF8, 0xF0, 0xC0, 0x0F, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x78, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 201 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 202 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x1E, 0x1E, 0x7C, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xDF, 0xFE, 0xF9, 0x07, 0xFF, 0xFF, 0xF8, 0x01, 0x07, 0x0F, 0x1E, 0x3C, 0x70, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCC, 0xEE, 0xEF, 0x77, 0x73, 0x3D, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 203 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xCC, 0xDC, 0xF8, 0x7F, 0x7F, 0x7F, 0xE0, 0xC0, 0xC1, 0x81, 0x83, 0xFF, 0xFF, 0xFF, 0x81, 0x81, 0xC1, 0xE0, 0x7F, 0x7F, 0x7F, 0xF8, 0xD8, 0xDC, 0x8C, 0x89, 0x99, 0xD8, 0xF8, 0xF0, 0xE0, 0xF0, 0x30, 0x38, 0x1D, 0x0D, 0x0F, 0xFF, 0xFF, 0xFF, 0x0F, 0x1D, 0x19, 0x38, 0xF0, 0xE0, 0xF0, 0xF8, 0xD8, 0x99, 0x88, 0x01, 0x01, 0x01, 0x00, 0x07, 0x07, 0x07, 0x00, 0x18, 0x18, 0x1C, 0x0C, 0xFF, 0xFF, 0xFF, 0x0C, 0x18, 0x18, 0x10, 0x07, 0x07, 0x07, 0x00, 0x01, 0x01, 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, // 204 - 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x01, 0xF1, 0xFD, 0xFE, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x0F, 0xFE, 0xFD, 0xF1, 0x01, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x33, 0x07, 0x06, 0x08, 0x8F, 0x8F, 0x8F, 0x08, 0x0C, 0x06, 0x07, 0x33, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 205 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 206 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0xE7, 0xFB, 0xFF, 0x9F, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x1C, 0x1E, 0x1F, 0x1B, 0x19, 0x18, 0xD8, 0xF8, 0xF8, 0x18, 0x01, 0x81, 0xC1, 0xE1, 0x71, 0x39, 0x1D, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x7F, 0x3B, 0x1C, 0x0E, 0x07, 0x03, 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, // 207 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 208 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 209 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x78, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x7C, 0xF8, 0xE0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3C, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 210 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB8, 0xBC, 0xFE, 0xE6, 0xC6, 0xFE, 0xFC, 0xBC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0xBC, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0x3C, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 211 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 212 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3E, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x7C, 0x7F, 0x67, 0x61, 0x60, 0x60, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x63, 0x6F, 0x7E, 0x7C, 0x70, 0x60, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0xF3, 0xE3, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF3, 0x7B, 0x3F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 213 - 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF8, 0x7C, 0x6E, 0x66, 0x66, 0x66, 0x6E, 0x7C, 0x78, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 214 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 215 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 216 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE1, 0x73, 0x3F, 0x1F, 0x0E, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x01, 0x03, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, 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, // 217 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0xE6, 0xCE, 0xDE, 0x1C, 0x19, 0x07, 0x07, 0x06, 0x00, 0x03, 0x03, 0x00, 0x06, 0x07, 0x07, 0x19, 0x1C, 0xDE, 0xCE, 0xE6, 0x62, 0x60, 0x60, 0x00, 0x04, 0x84, 0xC4, 0xC4, 0xE4, 0x64, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x64, 0xE4, 0xC4, 0xC4, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x0F, 0x07, 0x63, 0x7C, 0x7C, 0x0C, 0x00, 0xF8, 0xF8, 0x00, 0x0C, 0x3C, 0x7C, 0x73, 0x07, 0x0F, 0x1E, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 218 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 219 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 220 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 221 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 222 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 223 - 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 224 - 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0xB8, 0xDC, 0xCE, 0xC7, 0xC3, 0xC1, 0x80, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x03, 0x01, 0x1E, 0x7F, 0xFF, 0xE3, 0x80, 0x80, 0x80, 0xE3, 0xFF, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 225 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 226 - 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x87, 0x8E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0x60, 0xF0, 0xD8, 0x8C, 0x06, 0x8F, 0x9F, 0x9F, 0x98, 0x98, 0xB0, 0xB0, 0xF1, 0xE3, 0xE7, 0xCE, 0x9C, 0xB8, 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 227 - 0x00, 0x38, 0x3C, 0x7E, 0xEE, 0xC6, 0xFE, 0xBE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x07, 0x06, 0x06, 0x0E, 0xFE, 0xFC, 0xFC, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x1F, 0x1F, 0x1F, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 228 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 229 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 230 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x78, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x0F, 0x03, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x1F, 0x1E, 0x78, 0xF0, 0xE0, 0x80, 0x1F, 0x7F, 0xFF, 0xE1, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x98, 0x1C, 0x1E, 0xFF, 0xFB, 0xF9, 0x00, 0xF1, 0xFB, 0x7B, 0x1E, 0x9C, 0x9C, 0x98, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0xE0, 0xFC, 0xFF, 0x7F, 0x3D, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 231 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x7C, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0x0E, 0x07, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFF, 0x7C, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x07, 0x03, 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, // 232 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xF0, 0xF8, 0x3C, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x38, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x1C, 0x0C, 0x0C, 0x1E, 0x1F, 0x03, 0x01, 0x01, 0x81, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF8, 0xF0, 0x07, 0x1F, 0x3F, 0x38, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x3E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x03, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 233 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 234 - 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x78, 0x7E, 0x7F, 0x33, 0x31, 0x30, 0x70, 0x60, 0x70, 0x70, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x30, 0x70, 0x60, 0x70, 0x30, 0x31, 0x33, 0x7F, 0x7F, 0x7C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0xF0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 235 - 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0xBE, 0x80, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x01, 0xF9, 0xFF, 0xFF, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x03, 0x03, 0x0F, 0xFE, 0xFD, 0xF9, 0x01, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x71, 0x37, 0x0F, 0x0F, 0x1C, 0x98, 0x98, 0x98, 0x1C, 0x1C, 0x0F, 0x07, 0x33, 0x71, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 236 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x3F, 0xFE, 0xF6, 0x8E, 0x1C, 0x1C, 0x38, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9F, 0xFF, 0xFE, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x78, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x07, 0x03, 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, // 237 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 238 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x07, 0x3F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xE0, 0x80, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 239 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 240 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 241 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x3F, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x7E, 0xFC, 0xF0, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, 0xC0, 0xC0, 0xEF, 0xFF, 0xFF, 0xF0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0xFF, 0xEF, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x6F, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xE3, 0x6F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 242 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0xC1, 0xF1, 0xF0, 0xE1, 0x83, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x83, 0xF1, 0xF0, 0xE1, 0x83, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x03, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x03, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 243 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 244 - 0x80, 0xE0, 0xE0, 0xC0, 0x84, 0x0C, 0x1E, 0x3E, 0xF6, 0xE6, 0xCC, 0x1C, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x3F, 0x39, 0x73, 0x67, 0x66, 0x67, 0x63, 0x61, 0xE0, 0xE0, 0xCF, 0x9F, 0x3F, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, // 245 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x1E, 0x7E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xDF, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC7, 0xDF, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 246 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 247 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 248 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x3B, 0x71, 0xE0, 0xC0, 0x80, 0x01, 0x07, 0x0F, 0x1E, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0xF1, 0x7B, 0x3E, 0x1C, 0xE0, 0xF0, 0xB8, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0xE0, 0xC0, 0x80, 0x01, 0x03, 0x07, 0x0F, 0x1C, 0xB8, 0xF0, 0xE0, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, 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, // 249 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x1E, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF8, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x0E, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 250 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 251 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x07, 0x07, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x1C, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 252 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 253 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 254 - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 255 - -}; - -#endif + + +/* + * IconWorks_B_32pt + * + * created with FontCreator 4.3 + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : IconWorks_B_32pt.h + * Date : 07.03.2019 + * Font size in bytes : 151337 + * Font width : 10 + * Font height : 33 + * Font first char : 32 + * Font last char : 256 + * Font used chars : 224 + */ + +#include +#include + +#ifndef ICONWORKS_B_32PT_H +#define ICONWORKS_B_32PT_H + +#define ICONWORKS_B_32PT_WIDTH 10 +#define ICONWORKS_B_32PT_HEIGHT 33 + +static const uint8_t IconWorks_B_32pt[] PROGMEM = +{ + 0x4F, 0x29, // size + 0x0A, // width + 0x21, // height + 0x20, // first char + 0xE0, // char count + + // char widths + 0x14, 0x1F, 0x1E, 0x1E, 0x12, 0x09, 0x1E, 0x14, 0x1F, 0x20, + 0x1C, 0x1E, 0x1E, 0x16, 0x1E, 0x1F, 0x20, 0x1D, 0x1E, 0x1E, + 0x1D, 0x1C, 0x20, 0x18, 0x18, 0x1A, 0x1E, 0x1E, 0x1E, 0x20, + 0x1E, 0x20, 0x1E, 0x17, 0x17, 0x1F, 0x19, 0x1E, 0x1B, 0x1E, + 0x1E, 0x1E, 0x1E, 0x1B, 0x1B, 0x1A, 0x1C, 0x1A, 0x14, 0x15, + 0x14, 0x15, 0x16, 0x1E, 0x1D, 0x1E, 0x1D, 0x1E, 0x21, 0x20, + 0x17, 0x1B, 0x19, 0x16, 0x1E, 0x17, 0x17, 0x19, 0x1A, 0x20, + 0x1B, 0x21, 0x1E, 0x1E, 0x1E, 0x1B, 0x21, 0x1B, 0x1B, 0x18, + 0x14, 0x0E, 0x1D, 0x16, 0x15, 0x1E, 0x22, 0x1E, 0x14, 0x1E, + 0x21, 0x21, 0x21, 0x19, 0x1A, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, 0x09, + 0x09, 0x1C, 0x09, 0x09, 0x09, 0x09, 0x09, 0x1E, 0x09, 0x21, + 0x09, 0x16, 0x21, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x11, 0x09, 0x09, 0x09, 0x09, + 0x21, 0x21, 0x09, 0x20, 0x1E, 0x09, 0x09, 0x1F, 0x21, 0x21, + 0x09, 0x16, 0x1A, 0x1C, 0x09, 0x16, 0x09, 0x09, 0x21, 0x20, + 0x09, 0x22, 0x16, 0x09, 0x09, 0x1D, 0x1C, 0x09, 0x13, 0x09, + 0x09, 0x09, 0x1E, 0x21, 0x09, 0x21, 0x1B, 0x09, 0x09, 0x21, + 0x21, 0x21, 0x09, 0x1E, 0x1C, 0x19, 0x09, 0x15, 0x09, 0x09, + 0x1E, 0x21, 0x09, 0x1C, 0x21, 0x09, 0x09, 0x17, 0x1E, 0x09, + 0x19, 0x09, 0x09, 0x09, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0xC0, 0xE0, 0xF8, 0x78, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x78, 0x70, 0x78, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x78, 0xF8, 0xF0, 0xC0, 0x0F, 0x7F, 0xFF, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFF, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x3C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0E, 0x0F, 0x07, 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, // 33 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3E, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x3C, 0x3C, 0x7C, 0xEC, 0xCC, 0x8C, 0x8C, 0x0C, 0x0E, 0x0F, 0x0F, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x8C, 0x8C, 0xCC, 0xEC, 0x7C, 0x7C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x3F, 0x82, 0xC0, 0xE0, 0x60, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x9F, 0xFF, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x70, 0x30, 0x30, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x18, 0x18, 0x30, 0xB1, 0xE1, 0xE1, 0x41, 0x03, 0x03, 0x03, 0x07, 0x03, 0x03, 0xF1, 0xF8, 0xFC, 0x9C, 0x0F, 0x07, 0x03, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0x38, 0x1C, 0x0E, 0x87, 0xC3, 0xE1, 0x70, 0x38, 0x3C, 0x1E, 0x0E, 0x3E, 0xF8, 0xE0, 0xC0, 0x07, 0x7F, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x3E, 0xFC, 0xF0, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3C, 0x3B, 0x1F, 0x1F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x80, 0xE0, 0xF8, 0x78, 0x1C, 0x0C, 0x0E, 0x86, 0x86, 0x86, 0x86, 0x0E, 0x0C, 0x1C, 0x78, 0xF8, 0xE0, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x0F, 0x0F, 0x1F, 0x19, 0x19, 0x1F, 0x0F, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0E, 0x0F, 0x0F, 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, // 36 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0xFF, 0xFE, 0xFE, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0F, 0x0F, 0x0F, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 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, // 38 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x8E, 0xFE, 0xFC, 0xF8, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0x0F, 0x03, 0x01, 0x01, 0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0x01, 0x03, 0x07, 0x0F, 0xFE, 0xFC, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x0F, 0x1F, 0x3C, 0x78, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x70, 0x78, 0x3E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xCF, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xDF, 0xCF, 0xCF, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xDF, 0xCF, 0xCF, 0xDF, 0xDF, 0xD8, 0xD8, 0xD8, 0xDF, 0xDF, 0xCF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 40 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 0x03, 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, // 41 + 0xE0, 0xE0, 0xF0, 0x30, 0x30, 0x30, 0x38, 0x18, 0x18, 0x1C, 0x0C, 0x0E, 0x06, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x01, 0x0F, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x1E, 0x0F, 0x07, 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, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x07, 0x87, 0xC7, 0xE0, 0xF0, 0x38, 0x18, 0x18, 0x18, 0x38, 0x38, 0xF0, 0xE3, 0xC7, 0x87, 0x06, 0x76, 0x76, 0x76, 0x06, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0xF0, 0xC0, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xF0, 0xFF, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xCF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x60, 0xF0, 0xF0, 0xF8, 0x9C, 0x0E, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE3, 0xE7, 0xE7, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x7E, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xE7, 0xE7, 0xC7, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x71, 0x3B, 0x1F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xE6, 0xE6, 0xB6, 0xF6, 0xD8, 0xD8, 0xD8, 0xCC, 0xCF, 0xCF, 0xCF, 0x87, 0xCE, 0xFC, 0x78, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xE0, 0xE0, 0xE7, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x7E, 0x0F, 0x07, 0x07, 0x0F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0xFC, 0xF8, 0xC0, 0x7F, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0x1C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1E, 0x1F, 0x1F, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x0F, 0x0F, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x71, 0x73, 0x3F, 0x3E, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xC6, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xC6, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xFC, 0xFC, 0xFC, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x38, 0x1C, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x06, 0x0F, 0x1F, 0x3F, 0x7F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7F, 0x3F, 0x1F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0x7F, 0xFF, 0xFF, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE2, 0x76, 0x3E, 0x1E, 0x3E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0D, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xF0, 0x78, 0x3C, 0x9E, 0xCE, 0xE7, 0x73, 0x33, 0x39, 0x19, 0x19, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x19, 0x39, 0x79, 0x71, 0xF3, 0xE7, 0xC6, 0x8E, 0x1C, 0x78, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x18, 0x1C, 0x1E, 0x0E, 0x87, 0xC7, 0xE3, 0x63, 0x63, 0xE3, 0xC7, 0x86, 0x0E, 0x1E, 0x1C, 0x18, 0x01, 0x03, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x8C, 0x0C, 0x0D, 0x19, 0x3B, 0x73, 0xE7, 0xCE, 0x9C, 0x3C, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xE1, 0xF0, 0x30, 0x31, 0xF1, 0xE1, 0xC3, 0x07, 0x1E, 0xFC, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x01, 0x07, 0xFF, 0xFE, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x3C, 0x9C, 0xCE, 0xE7, 0x73, 0x3B, 0x19, 0x0D, 0x0C, 0x8C, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x00, 0xF8, 0xFE, 0xFF, 0x07, 0x01, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0xF0, 0xFC, 0x1E, 0x0F, 0x07, 0xC3, 0xE1, 0xF1, 0x31, 0x31, 0xF1, 0xE1, 0xC0, 0x00, 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 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, // 56 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x9C, 0xFE, 0xBF, 0xE7, 0xE3, 0xF1, 0x30, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x0C, 0x8F, 0xCF, 0xE7, 0xFF, 0x7F, 0x39, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0E, 0x07, 0x03, 0x01, 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, // 57 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF8, 0xFC, 0xFE, 0xFC, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0x70, 0x30, 0xF0, 0xF0, 0xF0, 0x30, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x3F, 0x37, 0x31, 0xF0, 0xFE, 0xFF, 0x37, 0x31, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x31, 0x37, 0xFF, 0xFC, 0xF1, 0x33, 0x37, 0x3E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1C, 0x38, 0x30, 0x73, 0x7F, 0x7E, 0xF8, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF8, 0x7E, 0x7F, 0x33, 0x38, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDF, 0xFC, 0xF0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 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, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x7C, 0x7C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xDF, 0xFC, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFC, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x70, 0x38, 0x1C, 0x1E, 0x0F, 0x07, 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, // 63 + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, 0xCF, 0xCF, 0x0C, 0xFC, 0xFC, 0xF8, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x9F, 0xBF, 0xBF, 0xB0, 0xB0, 0xB0, 0xB0, 0xB1, 0xB3, 0xB3, 0xB7, 0xBE, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x99, 0xD9, 0xE3, 0xF3, 0x3B, 0x1C, 0x9E, 0xFF, 0xF7, 0xFF, 0x7E, 0x3C, 0x18, 0x7F, 0xFF, 0xFF, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xC0, 0x00, 0xF0, 0xFC, 0xFE, 0xCF, 0xC7, 0xE3, 0x71, 0x38, 0x1C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x36, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x18, 0x18, 0x18, 0xFE, 0xFE, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x8C, 0x8C, 0x0C, 0x0C, 0x0C, 0x8C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x1E, 0x3E, 0x3F, 0x73, 0x63, 0x41, 0x00, 0x61, 0x63, 0x73, 0x3F, 0x1E, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x70, 0x78, 0x18, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFE, 0xC0, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x2C, 0x6C, 0x6C, 0x6C, 0x6C, 0x2C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x30, 0x38, 0x3C, 0x7F, 0xFF, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x30, 0x38, 0x3C, 0x7F, 0xFF, 0xFF, 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 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, // 76 + 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x01, 0x19, 0x19, 0x19, 0x19, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x01, 0x01, 0x81, 0x81, 0x81, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x01, 0x01, 0x01, 0x01, 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, // 77 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xF8, 0xFE, 0xFF, 0xFF, 0x03, 0x03, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x03, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x8C, 0x8C, 0x8C, 0x0C, 0x0C, 0x8C, 0x8C, 0x8C, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 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, // 78 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x38, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x71, 0x3B, 0x1F, 0x0E, 0x9C, 0xF8, 0xF0, 0xE0, 0xC0, 0xD8, 0xFC, 0x7E, 0x27, 0x03, 0x01, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x1C, 0x0E, 0x87, 0xC3, 0xE1, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0F, 0x0F, 0x0D, 0x0E, 0x07, 0x07, 0x03, 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, // 79 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x9F, 0xBF, 0xF8, 0xF0, 0xE0, 0xE0, 0xF0, 0xF8, 0xBF, 0x9F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0x0F, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0xFE, 0xFC, 0xF0, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0x00, 0xE0, 0xF0, 0xF8, 0x3C, 0x1C, 0x0E, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x1F, 0x7F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7E, 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 0x03, 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, 0x00, 0x00, // 82 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xC8, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xDE, 0x87, 0x03, 0x01, 0x03, 0x03, 0x03, 0x83, 0xC1, 0xC1, 0xC1, 0xE1, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x06, 0x0F, 0x1F, 0x7F, 0x7F, 0x7F, 0x7E, 0xFC, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xBF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x78, 0x78, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x7E, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x1F, 0x07, 0x03, 0x00, 0x40, 0xE0, 0xE0, 0xF8, 0xF8, 0xF6, 0xFE, 0xFC, 0xBE, 0x3E, 0x26, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0x3F, 0x03, 0xFC, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x03, 0x07, 0x06, 0x01, 0x81, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x06, 0x06, 0x07, 0x07, 0x03, 0x03, 0x01, 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, // 86 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x39, 0x1F, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE2, 0xC3, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x20, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x20, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3E, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0xF8, 0xC0, 0x1F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x83, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0x83, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1E, 0x3C, 0x78, 0x70, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x1F, 0x3F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFF, 0xF3, 0xC3, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC3, 0xFF, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0x3C, 0xB0, 0xF0, 0xF0, 0xF0, 0xB0, 0x30, 0x30, 0x30, 0xB0, 0xF0, 0xF0, 0xF0, 0xBE, 0x3F, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 91 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xF0, 0xF8, 0xFC, 0x9C, 0x8E, 0x86, 0x86, 0x86, 0x86, 0x8E, 0x9C, 0xFC, 0xF8, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFF, 0x1F, 0x1B, 0x19, 0x1F, 0x1F, 0x1F, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1F, 0x1F, 0x1F, 0x19, 0x19, 0x1B, 0x1F, 0xFF, 0xFC, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 93 + 0xC0, 0xE0, 0xF0, 0x38, 0x9C, 0xDC, 0xCC, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xCE, 0xCC, 0x9C, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0x71, 0x61, 0xE1, 0xE1, 0xC1, 0xDD, 0xDD, 0xDD, 0xC1, 0xC1, 0xC1, 0xE1, 0x61, 0x61, 0x70, 0x70, 0x3C, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x0B, 0x3D, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3F, 0x7F, 0x6F, 0x61, 0xC1, 0xC1, 0xC0, 0x87, 0xBF, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, 0x61, 0x63, 0x73, 0x3B, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0xF0, 0xF0, 0xB8, 0x98, 0x08, 0x00, 0x00, 0x08, 0x18, 0x98, 0xF8, 0xF0, 0xE0, 0x60, 0x40, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0xC3, 0xC3, 0xC0, 0xC0, 0xC3, 0xC3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xBC, 0xBE, 0xBE, 0x86, 0x86, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x87, 0x9E, 0xBC, 0xFB, 0xF7, 0xE7, 0xC6, 0x06, 0x06, 0x06, 0x07, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xFF, 0xFF, 0x7F, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 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, // 99 + 0xFC, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x1E, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x33, 0x37, 0x3E, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0xC6, 0xF6, 0xF6, 0x76, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x83, 0x3F, 0x3F, 0x3E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7F, 0x71, 0xE1, 0xC0, 0xC0, 0xE1, 0xE1, 0xFF, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFE, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xFE, 0xFE, 0xFC, 0xF8, 0xFC, 0xFC, 0x6C, 0x6C, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFD, 0xFD, 0xF9, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0x60, 0x7F, 0x7F, 0x3F, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 103 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0xF8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF8, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x1C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC4, 0xDE, 0xFF, 0xF3, 0x01, 0x00, 0x00, 0x01, 0x81, 0xC1, 0xC0, 0xE0, 0x60, 0x60, 0xC0, 0xC0, 0xC1, 0x81, 0x01, 0x01, 0x00, 0x01, 0x73, 0xFF, 0xDE, 0xCC, 0xC0, 0x80, 0x1F, 0x3F, 0x3F, 0xA0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x79, 0x60, 0x60, 0x60, 0x60, 0x31, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xA0, 0x3F, 0x3F, 0x1F, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x1D, 0x38, 0x30, 0x30, 0x38, 0x38, 0xF8, 0xF0, 0x80, 0x80, 0x80, 0x80, 0xF0, 0xF0, 0x78, 0x38, 0x30, 0x30, 0x38, 0x1D, 0x0F, 0x07, 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, // 106 + 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x70, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x1C, 0x38, 0x30, 0x70, 0x60, 0x61, 0x61, 0x60, 0x70, 0x30, 0x38, 0x38, 0x3E, 0x7F, 0xFF, 0xFB, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x06, 0x06, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0xF0, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 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, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xB8, 0x18, 0x38, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1C, 0x8E, 0xC7, 0xE3, 0xF1, 0x78, 0x39, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0x9E, 0x8F, 0xC7, 0xE3, 0xF1, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x0F, 0x06, 0x07, 0x07, 0x03, 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, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1F, 0xFF, 0xFB, 0xFB, 0x1B, 0x1B, 0x9B, 0x9B, 0x9B, 0x1B, 0x9B, 0x9B, 0x9B, 0x1B, 0x9B, 0x9B, 0x9B, 0x1B, 0xFB, 0xFB, 0xFF, 0x1F, 0x1E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xDF, 0xDF, 0xDF, 0xC0, 0xDF, 0xDF, 0xDF, 0xC0, 0xDF, 0xDF, 0xDF, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x70, 0x60, 0x60, 0x70, 0x78, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x1E, 0x07, 0x03, 0x03, 0x01, 0xE3, 0xFF, 0xFF, 0xE3, 0x01, 0x03, 0x03, 0x07, 0x1E, 0xFC, 0xF8, 0xF0, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCF, 0xFF, 0xDF, 0xCF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x3F, 0x7F, 0x71, 0xE3, 0xC7, 0xC6, 0xC6, 0xC7, 0xE3, 0x71, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 113 + 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xC0, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xF8, 0xFF, 0x1F, 0x07, 0x83, 0xE1, 0xF1, 0xF1, 0xF0, 0xE0, 0xC0, 0xE0, 0xE0, 0xE1, 0xC1, 0x83, 0x07, 0x1F, 0xFF, 0xFC, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xFF, 0x3E, 0xF8, 0xF1, 0xC1, 0x00, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x81, 0xE1, 0xF9, 0x7E, 0xFF, 0xC7, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1E, 0xDE, 0xDE, 0xDE, 0xDE, 0x1E, 0x1E, 0x07, 0x07, 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, // 114 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFE, 0x0F, 0x07, 0x01, 0x00, 0x01, 0x03, 0x07, 0x1E, 0x7C, 0xF8, 0xF0, 0x80, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0xE0, 0xF1, 0xFB, 0x3F, 0x1E, 0x7C, 0xF0, 0x80, 0x3F, 0xFF, 0xFF, 0xE3, 0x07, 0x07, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x98, 0xF8, 0xFF, 0x7F, 0x3F, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x7F, 0xFF, 0xFF, 0x98, 0x18, 0xCC, 0xFC, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x38, 0x38, 0x78, 0x7C, 0x6E, 0xE7, 0xC3, 0xC1, 0xC0, 0xC0, 0xFE, 0xFF, 0xFF, 0x60, 0x60, 0x70, 0x31, 0x3B, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0xF8, 0xF8, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0x07, 0x1F, 0x3F, 0x7C, 0x70, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x70, 0x7C, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC1, 0xC3, 0xC3, 0xFF, 0xFF, 0xFF, 0xC3, 0xC3, 0xC1, 0x01, 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, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF8, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x02, 0x07, 0x0F, 0x1F, 0x39, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC3, 0xC3, 0xE2, 0x60, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x40, 0x60, 0x70, 0xF8, 0xF8, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x70, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0xC0, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x10, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x18, 0x10, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x7E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x7E, 0xFC, 0xF0, 0x80, 0x02, 0x06, 0x0E, 0x1F, 0x3F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x3E, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3F, 0x3F, 0x32, 0x30, 0x30, 0x30, 0xF0, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xCE, 0xF4, 0x30, 0xFE, 0xCE, 0xFE, 0x30, 0xF4, 0xCE, 0xDE, 0x30, 0x30, 0xDE, 0xCE, 0xF4, 0x30, 0xFE, 0xCE, 0xCE, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x88, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 123 + 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x30, 0x30, 0x38, 0x18, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x18, 0x38, 0x30, 0x30, 0x70, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x01, 0x0F, 0x3F, 0x3E, 0x38, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x3F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 124 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x3F, 0x3F, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0xFE, 0xFC, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x98, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x06, 0x87, 0xC7, 0xE3, 0xFF, 0x7F, 0x3F, 0x06, 0x0F, 0x1B, 0x31, 0x60, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0E, 0x0F, 0x0F, 0x07, 0x03, 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, // 126 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 127 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 128 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 129 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 130 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 131 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 132 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 133 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 134 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 135 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 136 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 137 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 138 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 139 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 140 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 141 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 142 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 143 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 144 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 145 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 146 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 147 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 148 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 149 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 150 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 151 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 152 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 153 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 154 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 155 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 156 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 157 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 158 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 159 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 161 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 162 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x38, 0x38, 0x18, 0x18, 0x98, 0x98, 0x9C, 0x9C, 0x9C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x1F, 0xC0, 0xE0, 0xF0, 0x38, 0x38, 0x18, 0x18, 0x18, 0x30, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0x9C, 0x1C, 0x0C, 0x0C, 0x0C, 0x9C, 0xF8, 0xFF, 0x7F, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 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, // 163 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 164 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 165 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 166 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 167 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 168 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x30, 0xB8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xB8, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x7F, 0x77, 0xE3, 0xC1, 0x80, 0x80, 0x00, 0x3E, 0x7F, 0xFF, 0xE3, 0xC1, 0x80, 0x80, 0xC1, 0xE3, 0xFF, 0x7F, 0x3E, 0x00, 0x80, 0x80, 0xC1, 0xE3, 0x77, 0x7F, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x06, 0x06, 0x0E, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, 0x06, 0x06, 0x07, 0x03, 0x03, 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, // 169 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 170 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0x00, 0x80, 0x88, 0x98, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x39, 0xF1, 0xF3, 0xE7, 0x1F, 0xFE, 0xF8, 0xE0, 0x03, 0x0F, 0xFF, 0xFE, 0xF0, 0x1F, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x0C, 0xCE, 0xCF, 0xE7, 0x73, 0x7C, 0x3F, 0x9F, 0xC3, 0xE0, 0xF8, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x0C, 0x0C, 0x0E, 0x0E, 0x07, 0x07, 0x03, 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, // 171 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 172 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x18, 0x18, 0x18, 0x30, 0x70, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xCF, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFE, 0xFE, 0xFE, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 173 + 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCC, 0xCC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 174 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 175 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 176 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 177 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 178 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 179 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 180 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 181 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 182 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 183 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 184 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 185 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 186 + 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0x03, 0x0F, 0x3F, 0x7F, 0x77, 0xEF, 0xFE, 0xD8, 0xD8, 0xDC, 0xFE, 0xEF, 0x77, 0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 187 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 188 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 189 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 190 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 191 + 0x00, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x1C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x9C, 0x18, 0x18, 0x18, 0x38, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x00, 0x1F, 0x3F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x30, 0xFE, 0xFF, 0xFF, 0x7B, 0x1D, 0x0D, 0x8F, 0x87, 0x87, 0x87, 0x87, 0x8F, 0x0D, 0x1D, 0x7B, 0xFF, 0xFF, 0xFE, 0x70, 0x60, 0x60, 0x60, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x3C, 0x7E, 0xFF, 0xC3, 0xC1, 0x81, 0x81, 0xC3, 0xC3, 0xFF, 0x7E, 0x3C, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 192 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x9C, 0xCE, 0xE7, 0xFF, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, 0xCE, 0xE7, 0xF3, 0x79, 0x3C, 0x1E, 0x8F, 0xC7, 0xE3, 0x71, 0x3B, 0x1F, 0x0E, 0x07, 0x03, 0x01, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x0F, 0x0F, 0x07, 0x06, 0x06, 0x03, 0x03, 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, // 193 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 194 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x9C, 0x8E, 0x07, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0xB8, 0xDC, 0xEE, 0xE7, 0xF3, 0xB1, 0xB0, 0x98, 0x98, 0x9F, 0x9F, 0x8F, 0x0E, 0x8C, 0xD8, 0xF0, 0x60, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x06, 0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 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, // 195 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0xBF, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x8F, 0xFF, 0xFE, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, 0x1F, 0x1C, 0x38, 0x30, 0x30, 0x30, 0x38, 0x38, 0x1E, 0x1F, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 196 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 197 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 198 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1F, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x07, 0xFB, 0xF9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF9, 0x03, 0x07, 0x0F, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0xFE, 0x06, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 199 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x18, 0x1C, 0x1E, 0x3F, 0x03, 0x01, 0x41, 0xE3, 0xC7, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1C, 0xFC, 0xF8, 0xE0, 0x07, 0x1F, 0x3F, 0x78, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x01, 0x0F, 0xFF, 0xFF, 0xF7, 0x1E, 0xFC, 0xF0, 0x80, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1E, 0x3F, 0x77, 0xE7, 0xC0, 0xC3, 0x67, 0x37, 0x1E, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 200 + 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0x80, 0x9E, 0x9F, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0xF8, 0xFC, 0xFE, 0x0F, 0x03, 0x03, 0xC1, 0xF1, 0xF1, 0x3B, 0x1B, 0x0F, 0x0E, 0x0D, 0x0D, 0x0D, 0x1C, 0x38, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x38, 0x3C, 0x7F, 0x0F, 0x07, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x3C, 0xF8, 0xF0, 0xC0, 0x0F, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x78, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 201 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 202 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x1E, 0x1E, 0x7C, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xDF, 0xFE, 0xF9, 0x07, 0xFF, 0xFF, 0xF8, 0x01, 0x07, 0x0F, 0x1E, 0x3C, 0x70, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xCC, 0xEE, 0xEF, 0x77, 0x73, 0x3D, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 203 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xCC, 0xDC, 0xF8, 0x7F, 0x7F, 0x7F, 0xE0, 0xC0, 0xC1, 0x81, 0x83, 0xFF, 0xFF, 0xFF, 0x81, 0x81, 0xC1, 0xE0, 0x7F, 0x7F, 0x7F, 0xF8, 0xD8, 0xDC, 0x8C, 0x89, 0x99, 0xD8, 0xF8, 0xF0, 0xE0, 0xF0, 0x30, 0x38, 0x1D, 0x0D, 0x0F, 0xFF, 0xFF, 0xFF, 0x0F, 0x1D, 0x19, 0x38, 0xF0, 0xE0, 0xF0, 0xF8, 0xD8, 0x99, 0x88, 0x01, 0x01, 0x01, 0x00, 0x07, 0x07, 0x07, 0x00, 0x18, 0x18, 0x1C, 0x0C, 0xFF, 0xFF, 0xFF, 0x0C, 0x18, 0x18, 0x10, 0x07, 0x07, 0x07, 0x00, 0x01, 0x01, 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, // 204 + 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0xBE, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x01, 0xF1, 0xFD, 0xFE, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x0F, 0xFE, 0xFD, 0xF1, 0x01, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x33, 0x07, 0x06, 0x08, 0x8F, 0x8F, 0x8F, 0x08, 0x0C, 0x06, 0x07, 0x33, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 205 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 206 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0xE7, 0xFB, 0xFF, 0x9F, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x1C, 0x1E, 0x1F, 0x1B, 0x19, 0x18, 0xD8, 0xF8, 0xF8, 0x18, 0x01, 0x81, 0xC1, 0xE1, 0x71, 0x39, 0x1D, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x7F, 0x3B, 0x1C, 0x0E, 0x07, 0x03, 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, // 207 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 208 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 209 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x78, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x7C, 0xF8, 0xE0, 0x80, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3C, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 210 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB8, 0xBC, 0xFE, 0xE6, 0xC6, 0xFE, 0xFC, 0xBC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0xBC, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0xFC, 0xFC, 0x3C, 0x38, 0x30, 0x20, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x3C, 0x38, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x3C, 0x1F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 211 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 212 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3E, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0x78, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x7C, 0x7F, 0x67, 0x61, 0x60, 0x60, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x63, 0x6F, 0x7E, 0x7C, 0x70, 0x60, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0x7F, 0xF3, 0xE3, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xF3, 0x7B, 0x3F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 213 + 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xF8, 0x7C, 0x6E, 0x66, 0x66, 0x66, 0x6E, 0x7C, 0x78, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 214 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 215 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 216 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE1, 0x73, 0x3F, 0x1F, 0x0E, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x01, 0x03, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, 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, // 217 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0x60, 0xE6, 0xCE, 0xDE, 0x1C, 0x19, 0x07, 0x07, 0x06, 0x00, 0x03, 0x03, 0x00, 0x06, 0x07, 0x07, 0x19, 0x1C, 0xDE, 0xCE, 0xE6, 0x62, 0x60, 0x60, 0x00, 0x04, 0x84, 0xC4, 0xC4, 0xE4, 0x64, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x64, 0xE4, 0xC4, 0xC4, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x0F, 0x07, 0x63, 0x7C, 0x7C, 0x0C, 0x00, 0xF8, 0xF8, 0x00, 0x0C, 0x3C, 0x7C, 0x73, 0x07, 0x0F, 0x1E, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 218 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 219 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 220 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 221 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 222 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 223 + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 224 + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x06, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0xB8, 0xDC, 0xCE, 0xC7, 0xC3, 0xC1, 0x80, 0x3F, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x03, 0x01, 0x1E, 0x7F, 0xFF, 0xE3, 0x80, 0x80, 0x80, 0xE3, 0xFF, 0xFF, 0xDE, 0x80, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 225 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 226 + 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x87, 0x8E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0x60, 0xF0, 0xD8, 0x8C, 0x06, 0x8F, 0x9F, 0x9F, 0x98, 0x98, 0xB0, 0xB0, 0xF1, 0xE3, 0xE7, 0xCE, 0x9C, 0xB8, 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 227 + 0x00, 0x38, 0x3C, 0x7E, 0xEE, 0xC6, 0xFE, 0xBE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x07, 0x06, 0x06, 0x0E, 0xFE, 0xFC, 0xFC, 0x60, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x1F, 0x1F, 0x1F, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 228 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 229 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 230 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x78, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x0F, 0x03, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x1F, 0x1E, 0x78, 0xF0, 0xE0, 0x80, 0x1F, 0x7F, 0xFF, 0xE1, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x98, 0x1C, 0x1E, 0xFF, 0xFB, 0xF9, 0x00, 0xF1, 0xFB, 0x7B, 0x1E, 0x9C, 0x9C, 0x98, 0x80, 0x80, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0xE0, 0xFC, 0xFF, 0x7F, 0x3D, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 231 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x7C, 0x3E, 0x0F, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0x0E, 0x07, 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFF, 0x7C, 0x00, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x07, 0x03, 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, // 232 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xF0, 0xF8, 0x3C, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x38, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x1C, 0x0C, 0x0C, 0x1E, 0x1F, 0x03, 0x01, 0x01, 0x81, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0xFC, 0xF8, 0xF0, 0x07, 0x1F, 0x3F, 0x38, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x3E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x03, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 233 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 234 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x78, 0x7E, 0x7F, 0x33, 0x31, 0x30, 0x70, 0x60, 0x70, 0x70, 0x30, 0x30, 0x70, 0xF0, 0xE0, 0xF0, 0x70, 0x30, 0x30, 0x30, 0x70, 0x60, 0x70, 0x30, 0x31, 0x33, 0x7F, 0x7F, 0x7C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0xF0, 0xC0, 0xC0, 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 235 + 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x80, 0xBE, 0xBE, 0xBE, 0x80, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x01, 0xF9, 0xFF, 0xFF, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x03, 0x03, 0x0F, 0xFE, 0xFD, 0xF9, 0x01, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x71, 0x37, 0x0F, 0x0F, 0x1C, 0x98, 0x98, 0x98, 0x1C, 0x1C, 0x0F, 0x07, 0x33, 0x71, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 236 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x3F, 0xFE, 0xF6, 0x8E, 0x1C, 0x1C, 0x38, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9F, 0xFF, 0xFE, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x78, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0E, 0x06, 0x07, 0x07, 0x03, 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, // 237 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 238 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x07, 0x3F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xE0, 0x80, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 239 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 240 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 241 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7E, 0x3F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x3F, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x3F, 0x7E, 0xFC, 0xF0, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, 0xC0, 0xC0, 0xEF, 0xFF, 0xFF, 0xF0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0xFF, 0xEF, 0xC0, 0xC0, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x6F, 0xE3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xE3, 0x6F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 242 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF0, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0xC1, 0xF1, 0xF0, 0xE1, 0x83, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x83, 0xF1, 0xF0, 0xE1, 0x83, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x03, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x03, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 243 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 244 + 0x80, 0xE0, 0xE0, 0xC0, 0x84, 0x0C, 0x1E, 0x3E, 0xF6, 0xE6, 0xCC, 0x1C, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x3F, 0x39, 0x73, 0x67, 0x66, 0x67, 0x63, 0x61, 0xE0, 0xE0, 0xCF, 0x9F, 0x3F, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x0F, 0x07, 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, 0x00, 0x00, 0x00, 0x00, // 245 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x1E, 0x7E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xDF, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC7, 0xDF, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 246 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 247 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 248 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x3B, 0x71, 0xE0, 0xC0, 0x80, 0x01, 0x07, 0x0F, 0x1E, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0xF1, 0x7B, 0x3E, 0x1C, 0xE0, 0xF0, 0xB8, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0xE0, 0xC0, 0x80, 0x01, 0x03, 0x07, 0x0F, 0x1C, 0xB8, 0xF0, 0xE0, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0E, 0x07, 0x03, 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, // 249 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x1E, 0x1E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x70, 0xF8, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x0E, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 250 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 251 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x07, 0x07, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xF0, 0xE0, 0xC0, 0x3F, 0x3F, 0x3F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x1C, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 252 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 253 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 254 + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 255 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/OpenSans36.h b/lib/BrbDisplayBase/fonts/OpenSans36.h index ff0d3c2..0f48d25 100644 --- a/lib/BrbDisplayBase/fonts/OpenSans36.h +++ b/lib/BrbDisplayBase/fonts/OpenSans36.h @@ -1,166 +1,166 @@ - - -/* - * - * OpenSans36 - * - * created with FontCreator - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : OpenSans36.h - * Date : 02.02.2019 - * Font size in bytes : 53900 - * Font width : 10 - * Font height : 37 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef OPENSANS36_H -#define OPENSANS36_H - -#define OPENSANS36_WIDTH 10 -#define OPENSANS36_HEIGHT 37 - -static const uint8_t OpenSans36[] PROGMEM = { - 0xD2, 0x8C, // size - 0x0A, // width - 0x25, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x00, 0x04, 0x0A, 0x15, 0x11, 0x1A, 0x17, 0x04, 0x09, 0x09, - 0x10, 0x11, 0x06, 0x08, 0x04, 0x0B, 0x11, 0x09, 0x11, 0x11, - 0x13, 0x11, 0x11, 0x11, 0x11, 0x11, 0x04, 0x06, 0x11, 0x11, - 0x11, 0x0D, 0x1C, 0x17, 0x12, 0x14, 0x15, 0x0E, 0x0E, 0x15, - 0x13, 0x03, 0x06, 0x12, 0x0E, 0x19, 0x13, 0x18, 0x10, 0x18, - 0x12, 0x10, 0x14, 0x14, 0x15, 0x1F, 0x15, 0x14, 0x13, 0x08, - 0x0B, 0x08, 0x12, 0x10, 0x07, 0x0F, 0x11, 0x0E, 0x11, 0x10, - 0x0C, 0x12, 0x10, 0x03, 0x06, 0x0F, 0x03, 0x1B, 0x10, 0x12, - 0x11, 0x11, 0x0B, 0x0D, 0x0B, 0x10, 0x12, 0x1A, 0x11, 0x12, - 0x0F, 0x0C, 0x02, 0x0C, 0x11, 0x0F, - - // font data - 0xFC, 0xFC, 0xFC, 0x7C, 0x03, 0xFF, 0xFF, 0x00, 0x80, 0x8F, 0x8F, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 33 - 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x1C, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFF, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC, 0xFF, 0x7F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFF, 0x3F, 0x0D, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFF, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, // 35 - 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0xFE, 0xFE, 0xFE, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x70, 0x70, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x81, 0xC1, 0xC3, 0xE7, 0xFF, 0x7E, 0x18, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x3F, 0x3F, 0x3F, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0xE0, 0xF0, 0x78, 0x1C, 0x0C, 0x0C, 0x1C, 0x38, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x3C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x80, 0xC0, 0xF0, 0x7C, 0x1F, 0x87, 0xE1, 0xF0, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x81, 0xE1, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, // 37 - 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xCF, 0xFE, 0xF8, 0xF0, 0xF0, 0xF8, 0x98, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0xFC, 0xFE, 0xFF, 0x87, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0xE0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 - 0x0C, 0xFC, 0xFC, 0x04, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x0C, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x10, // 40 - 0x04, 0x0C, 0x3C, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 - 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x0E, 0xFE, 0xFE, 0x02, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x01, 0x01, 0x81, 0xE1, 0xF3, 0xFB, 0x3F, 0x07, 0x0F, 0x3F, 0xFB, 0xF3, 0xE1, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x0F, 0x01, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x1F, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0x00, 0xC0, 0xF0, 0xF0, 0x78, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0xFC, 0xFC, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 - 0x20, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 - 0x20, 0x70, 0x38, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xB8, 0x9F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xC7, 0xFF, 0xFE, 0x7C, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x3F, 0x3B, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0x00, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xFF, 0xFF, 0x3E, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x8F, 0xC1, 0xE0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x1F, 0xFF, 0xFF, 0xE3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xDC, 0xFC, 0xFC, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x0F, 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, 0x00, 0x00, // 55 - 0x00, 0xE0, 0xF0, 0xF8, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x07, 0x0F, 0x1F, 0xB8, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xB8, 0x1F, 0x0F, 0x07, 0x00, 0xF8, 0xFE, 0xFF, 0x87, 0x03, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x87, 0xFF, 0xFE, 0xF8, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 - 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x60, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x81, 0xE0, 0xF8, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x1C, 0x80, 0x80, 0x80, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 58 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x0F, 0x01, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x1C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x38, 0x30, 0x70, 0x60, 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, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x38, 0x18, 0x1C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x03, 0x03, 0x01, 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, // 62 - 0x38, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9F, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 - 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xFC, 0xFE, 0x0F, 0x03, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x3C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFE, 0xF8, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x1F, 0x3F, 0x7F, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x3F, 0x1F, 0x03, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x70, 0x30, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x1C, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF8, 0xF0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xB0, 0xB8, 0x9F, 0x1F, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xC7, 0xFF, 0xFF, 0xFC, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x38, 0x18, 0xF0, 0xFE, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFE, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFE, 0x7F, 0x3F, 0x03, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x03, 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, // 68 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x38, 0x18, 0xF0, 0xFE, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x07, 0x3F, 0x7F, 0xFE, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 - 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 73 - 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x18, 0x08, 0x00, // 74 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x1C, 0x0C, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xFC, 0xDE, 0x8F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x7C, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 - 0xFC, 0xFC, 0x3C, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x1C, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x7F, 0x1F, 0x03, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xF8, 0xE0, 0x80, 0xE0, 0xF8, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 - 0xFC, 0xFC, 0x7C, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x7E, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3E, 0xF8, 0xF0, 0xC0, 0x80, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 - 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xF8, 0x07, 0x3F, 0xFF, 0xFE, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xFE, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 79 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0xF8, 0xF0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xF0, 0xFF, 0x7F, 0x1F, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xF8, 0x07, 0x3F, 0xFF, 0xFE, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xFE, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0x7F, 0xF7, 0xE7, 0xC3, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x18, 0x10, 0x00, 0x00, // 81 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFD, 0x7F, 0x3F, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x1F, 0x7F, 0xF9, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x38, 0x00, 0x07, 0x1F, 0x3F, 0x3C, 0x78, 0x70, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x87, 0xFF, 0xFE, 0xFC, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 - 0x04, 0x3C, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3C, 0x04, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 - 0x3C, 0xFC, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3C, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFC, 0x3C, 0x00, 0x03, 0x3F, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x1F, 0x01, 0x00, 0x03, 0x1F, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFC, 0xC0, 0xE0, 0xFE, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFE, 0xE0, 0xC0, 0xFC, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 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, // 87 - 0x00, 0x04, 0x1C, 0x3C, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0xBE, 0xF8, 0xF0, 0xF8, 0xBE, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x03, 0x01, 0x03, 0x0F, 0x3F, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0x04, 0x1C, 0x7C, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFC, 0xF0, 0xC0, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xDC, 0xFC, 0xFC, 0x7C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 91 - 0x1C, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 - 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 93 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x1C, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3E, 0xF8, 0xE0, 0x80, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 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, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, // 95 - 0x01, 0x03, 0x0F, 0x1F, 0x3C, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFC, 0xF8, 0xF0, 0xF0, 0xF8, 0xFC, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x7C, 0xF8, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0x0F, 0x0F, 0x07, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x04, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x80, 0xF0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x78, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xCE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 - 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0C, 0x0C, 0x0C, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1E, 0xFE, 0xFE, 0xE6, 0x06, 0x06, 0x00, 0x01, 0x87, 0xEF, 0xEE, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0xE0, 0xF0, 0xF9, 0x1B, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFC, 0xF8, 0xF0, 0x18, 0x38, 0x78, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x18, 0x08, // 103 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 - 0x3C, 0x3C, 0x3C, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 105 - 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xF0, 0x78, 0x78, 0x18, // 106 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x06, 0x02, 0xFF, 0xFF, 0xFF, 0x0C, 0x0F, 0x07, 0x1F, 0x3F, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 108 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xF0, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xF8, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0x78, 0xF0, 0xE0, 0x80, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x7C, 0xF8, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x78, 0xFC, 0xFE, 0xFE, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, // 113 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xF0, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC, 0x9E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x0C, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0C, 0x1C, 0xFC, 0xF8, 0xF0, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0xFE, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFC, 0xE0, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 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, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFE, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x3E, 0x3E, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFE, 0x1E, 0x00, 0x01, 0x0F, 0xFF, 0xFE, 0xE0, 0x00, 0xE0, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFE, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x3E, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x3E, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7B, 0x3F, 0x0F, 0x3F, 0x7B, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x7E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0xE0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xE7, 0xFF, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x78, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xE6, 0xF6, 0x7E, 0x3E, 0x0E, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x0F, 0x0F, 0x3F, 0xF9, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x18, 0x18, // 123 - 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, // 124 - 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF9, 0x3F, 0x0F, 0x0F, 0x06, 0x06, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 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, // 126 - 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 - -}; - -#endif + + +/* + * + * OpenSans36 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : OpenSans36.h + * Date : 02.02.2019 + * Font size in bytes : 53900 + * Font width : 10 + * Font height : 37 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef OPENSANS36_H +#define OPENSANS36_H + +#define OPENSANS36_WIDTH 10 +#define OPENSANS36_HEIGHT 37 + +static const uint8_t OpenSans36[] PROGMEM = { + 0xD2, 0x8C, // size + 0x0A, // width + 0x25, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x00, 0x04, 0x0A, 0x15, 0x11, 0x1A, 0x17, 0x04, 0x09, 0x09, + 0x10, 0x11, 0x06, 0x08, 0x04, 0x0B, 0x11, 0x09, 0x11, 0x11, + 0x13, 0x11, 0x11, 0x11, 0x11, 0x11, 0x04, 0x06, 0x11, 0x11, + 0x11, 0x0D, 0x1C, 0x17, 0x12, 0x14, 0x15, 0x0E, 0x0E, 0x15, + 0x13, 0x03, 0x06, 0x12, 0x0E, 0x19, 0x13, 0x18, 0x10, 0x18, + 0x12, 0x10, 0x14, 0x14, 0x15, 0x1F, 0x15, 0x14, 0x13, 0x08, + 0x0B, 0x08, 0x12, 0x10, 0x07, 0x0F, 0x11, 0x0E, 0x11, 0x10, + 0x0C, 0x12, 0x10, 0x03, 0x06, 0x0F, 0x03, 0x1B, 0x10, 0x12, + 0x11, 0x11, 0x0B, 0x0D, 0x0B, 0x10, 0x12, 0x1A, 0x11, 0x12, + 0x0F, 0x0C, 0x02, 0x0C, 0x11, 0x0F, + + // font data + 0xFC, 0xFC, 0xFC, 0x7C, 0x03, 0xFF, 0xFF, 0x00, 0x80, 0x8F, 0x8F, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 33 + 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x1C, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFF, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0xEC, 0xFF, 0x7F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFF, 0x3F, 0x0D, 0x0C, 0x0C, 0x0C, 0x8C, 0xFC, 0xFF, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, // 35 + 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0xFE, 0xFE, 0xFE, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x1F, 0x3F, 0x3F, 0x70, 0x70, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x81, 0xC1, 0xC3, 0xE7, 0xFF, 0x7E, 0x18, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x3F, 0x3F, 0x3F, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xE0, 0xF0, 0x78, 0x1C, 0x0C, 0x0C, 0x1C, 0x38, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x3C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x80, 0xC0, 0xF0, 0x7C, 0x1F, 0x87, 0xE1, 0xF0, 0x30, 0x30, 0x30, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x81, 0xE1, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 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, 0x00, 0x00, 0x00, // 37 + 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xCF, 0xFE, 0xF8, 0xF0, 0xF0, 0xF8, 0x98, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0xFC, 0xFE, 0xFF, 0x87, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0xE0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0x0C, 0xFC, 0xFC, 0x04, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x0C, 0x04, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x10, // 40 + 0x04, 0x0C, 0x3C, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 + 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x0E, 0xFE, 0xFE, 0x02, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x01, 0x01, 0x81, 0xE1, 0xF3, 0xFB, 0x3F, 0x07, 0x0F, 0x3F, 0xFB, 0xF3, 0xE1, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x0F, 0x01, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x1F, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0xC0, 0xF0, 0xF0, 0x78, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0xFE, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0xFC, 0xFC, 0xFC, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x20, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x20, 0x70, 0x38, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xB8, 0x9F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xC7, 0xFF, 0xFE, 0x7C, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x3F, 0x3B, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3, 0xFF, 0xFF, 0x3E, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x8F, 0xC1, 0xE0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x1F, 0xFF, 0xFF, 0xE3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xDC, 0xFC, 0xFC, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x0F, 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, 0x00, 0x00, // 55 + 0x00, 0xE0, 0xF0, 0xF8, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x07, 0x0F, 0x1F, 0xB8, 0xF0, 0xF0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xB8, 0x1F, 0x0F, 0x07, 0x00, 0xF8, 0xFE, 0xFF, 0x87, 0x03, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x87, 0xFF, 0xFE, 0xF8, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x60, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x81, 0xE0, 0xF8, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x1C, 0x80, 0x80, 0x80, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x3F, 0x0F, 0x01, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x1C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x38, 0x30, 0x70, 0x60, 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, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x38, 0x18, 0x1C, 0x0C, 0x0E, 0x06, 0x07, 0x03, 0x03, 0x03, 0x01, 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, // 62 + 0x38, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x9F, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x18, 0x18, 0x1C, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xFC, 0xFE, 0x0F, 0x03, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x3C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFE, 0xF8, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x07, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x1F, 0x3F, 0x7F, 0xE0, 0xC0, 0xC0, 0xE0, 0x70, 0x3F, 0x1F, 0x03, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x70, 0x30, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x1C, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x78, 0xF8, 0xF0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xB0, 0xB8, 0x9F, 0x1F, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xC7, 0xFF, 0xFF, 0xFC, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x38, 0x18, 0xF0, 0xFE, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFE, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFE, 0x7F, 0x3F, 0x03, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x03, 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, // 68 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x38, 0x18, 0xF0, 0xFE, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x07, 0x3F, 0x7F, 0xFE, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x18, 0x08, 0x00, // 74 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x1C, 0x0C, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xFC, 0xDE, 0x8F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x7C, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0xFC, 0xFC, 0x3C, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x1C, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x7F, 0x1F, 0x03, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xF8, 0xE0, 0x80, 0xE0, 0xF8, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xFC, 0xFC, 0x7C, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x7E, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x3E, 0xF8, 0xF0, 0xC0, 0x80, 0xFF, 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xF8, 0x07, 0x3F, 0xFF, 0xFE, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xFE, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 79 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0xF8, 0xF0, 0xE0, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xF0, 0xFF, 0x7F, 0x1F, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFF, 0xF8, 0x07, 0x3F, 0xFF, 0xFE, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xFE, 0xFF, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0x7F, 0xF7, 0xE7, 0xC3, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x18, 0x18, 0x10, 0x00, 0x00, // 81 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFD, 0x7F, 0x3F, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x1F, 0x7F, 0xF9, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x38, 0x38, 0x00, 0x07, 0x1F, 0x3F, 0x3C, 0x78, 0x70, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x87, 0xFF, 0xFE, 0xFC, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x04, 0x3C, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3C, 0x04, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 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, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x3C, 0xFC, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFC, 0x3C, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFC, 0x3C, 0x00, 0x03, 0x3F, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x1F, 0x01, 0x00, 0x03, 0x1F, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFC, 0xC0, 0xE0, 0xFE, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFE, 0xE0, 0xC0, 0xFC, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 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, // 87 + 0x00, 0x04, 0x1C, 0x3C, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0xBE, 0xF8, 0xF0, 0xF8, 0xBE, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x03, 0x01, 0x03, 0x0F, 0x3F, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x04, 0x1C, 0x7C, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3F, 0xFC, 0xF0, 0xC0, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xDC, 0xFC, 0xFC, 0x7C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFC, 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 91 + 0x1C, 0xFC, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFF, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 93 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x1C, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3E, 0xF8, 0xE0, 0x80, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 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, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, // 95 + 0x01, 0x03, 0x0F, 0x1F, 0x3C, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFC, 0xF8, 0xF0, 0xF0, 0xF8, 0xFC, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x7C, 0xF8, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0x0F, 0x0F, 0x07, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x04, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x80, 0xF0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x78, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xCE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0C, 0x0C, 0x0C, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1E, 0xFE, 0xFE, 0xE6, 0x06, 0x06, 0x00, 0x01, 0x87, 0xEF, 0xEE, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x0E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0xE0, 0xF0, 0xF9, 0x1B, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFC, 0xF8, 0xF0, 0x18, 0x38, 0x78, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x18, 0x08, // 103 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x3C, 0x3C, 0x3C, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xF0, 0x78, 0x78, 0x18, // 106 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x06, 0x02, 0xFF, 0xFF, 0xFF, 0x0C, 0x0F, 0x07, 0x1F, 0x3F, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 108 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xF0, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xF8, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0x78, 0xF0, 0xE0, 0x80, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x7C, 0xF8, 0xF0, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x78, 0xFC, 0xFE, 0xFE, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xF0, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC, 0x9E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x0C, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0C, 0x1C, 0xFC, 0xF8, 0xF0, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0xFE, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFC, 0xE0, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0F, 0x0F, 0x0F, 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, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFE, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x3E, 0x3E, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFE, 0x1E, 0x00, 0x01, 0x0F, 0xFF, 0xFE, 0xE0, 0x00, 0xE0, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x01, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFE, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0E, 0x3E, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x3E, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7B, 0x3F, 0x0F, 0x3F, 0x7B, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x7E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0xE0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xE7, 0xFF, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x70, 0x78, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xE6, 0xF6, 0x7E, 0x3E, 0x0E, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0D, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x0F, 0x0F, 0x3F, 0xF9, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x18, 0x18, // 123 + 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, // 124 + 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF9, 0x3F, 0x0F, 0x0F, 0x06, 0x06, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 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, // 126 + 0xFC, 0xFC, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/Open_Sans_32pt.h b/lib/BrbDisplayBase/fonts/Open_Sans_32pt.h index bfae979..f65e279 100644 --- a/lib/BrbDisplayBase/fonts/Open_Sans_32pt.h +++ b/lib/BrbDisplayBase/fonts/Open_Sans_32pt.h @@ -1,151 +1,151 @@ - - -/* - * Open_Sans_32pt - * - * created with FontCreator 4.3 - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : Open_Sans_32pt.h - * Date : 07.03.2019 - * Font size in bytes : 41286 - * Font width : 10 - * Font height : 32 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - */ - -#include -#include - -#ifndef OPEN_SANS_32PT_H -#define OPEN_SANS_32PT_H - -#define OPEN_SANS_32PT_WIDTH 10 -#define OPEN_SANS_32PT_HEIGHT 32 - -static const uint8_t Open_Sans_32pt[] PROGMEM = -{ - 0xA1, 0x46, // size - 0x0A, // width - 0x20, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x0A, 0x03, 0x09, 0x13, 0x0E, 0x16, 0x14, 0x03, 0x07, 0x07, - 0x0F, 0x10, 0x05, 0x08, 0x03, 0x0A, 0x0E, 0x08, 0x0E, 0x0F, - 0x10, 0x0E, 0x0E, 0x0F, 0x0E, 0x0E, 0x03, 0x05, 0x0E, 0x0E, - 0x0E, 0x0C, 0x19, 0x14, 0x10, 0x11, 0x12, 0x0D, 0x0D, 0x13, - 0x12, 0x03, 0x06, 0x11, 0x0D, 0x17, 0x12, 0x15, 0x0E, 0x15, - 0x10, 0x0E, 0x12, 0x11, 0x13, 0x1C, 0x12, 0x12, 0x10, 0x07, - 0x0B, 0x07, 0x0F, 0x0E, 0x06, 0x0D, 0x0F, 0x0C, 0x0F, 0x0E, - 0x0B, 0x10, 0x0E, 0x04, 0x06, 0x0D, 0x02, 0x18, 0x0E, 0x0F, - 0x0F, 0x0F, 0x09, 0x0C, 0x0A, 0x0E, 0x10, 0x19, 0x0F, 0x10, - 0x0D, 0x0A, 0x02, 0x0A, 0x0E, 0x0D, - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 - 0xFE, 0xFE, 0xFE, 0x7F, 0xFF, 0x07, 0xF0, 0xF1, 0xF0, 0x00, 0x00, 0x00, // 33 - 0x3E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x83, 0xC3, 0xFF, 0xFF, 0x83, 0x83, 0x83, 0x83, 0xC3, 0xFF, 0xFF, 0x83, 0x83, 0x83, 0x83, 0x03, 0x01, 0x01, 0x01, 0xF1, 0xFF, 0x0F, 0x01, 0x01, 0x01, 0x01, 0xF1, 0xFF, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 - 0x80, 0xE0, 0xF0, 0x30, 0x38, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x38, 0x30, 0x00, 0x01, 0x07, 0x0F, 0x0C, 0x18, 0x18, 0xFF, 0xFF, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0xFF, 0xFF, 0x60, 0x70, 0x30, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x3C, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x70, 0x60, 0x60, 0x60, 0x3C, 0x1F, 0x87, 0xE0, 0xF8, 0x3C, 0x0F, 0xC3, 0xF0, 0x78, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0x78, 0xC0, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 - 0x00, 0x00, 0xF8, 0xFC, 0x9C, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE1, 0x73, 0x37, 0x3E, 0x3C, 0x7C, 0x7E, 0xE7, 0xC7, 0x83, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x00, 0x1F, 0x3F, 0x79, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x61, 0x63, 0x77, 0x3E, 0x1C, 0x3E, 0x77, 0xE3, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 - 0x3E, 0xFE, 0x7E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0x00, 0x80, 0xE0, 0xF8, 0x3E, 0x0E, 0x02, 0xF8, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x07, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1C, 0x10, // 40 - 0x02, 0x0E, 0x3E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x07, 0x10, 0x1C, 0x1F, 0x07, 0x03, 0x00, 0x00, // 41 - 0x40, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC1, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x70, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3E, 0x07, 0x01, 0x03, 0x0F, 0x3E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0x10, 0x0C, 0x0F, 0x07, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, // 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7E, 0x0E, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0xC0, 0xF0, 0xF8, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x1F, 0x3E, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3E, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x20, 0x70, 0x38, 0x18, 0x0C, 0x8E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 - 0x08, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x00, 0xE0, 0xF0, 0xF8, 0xDC, 0xCE, 0xC7, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 - 0x00, 0x08, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x3C, 0x77, 0xE7, 0xE3, 0x80, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0xFE, 0xFE, 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xE0, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3C, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x00, 0xC0, 0xF0, 0x78, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0xEF, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x38, 0xF0, 0xE0, 0x07, 0x1F, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x78, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xFE, 0x7E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 - 0xE0, 0xF8, 0xFC, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF8, 0xE0, 0x80, 0xC3, 0xE7, 0x7E, 0x3C, 0x1C, 0x18, 0x18, 0x3C, 0x3C, 0x67, 0xE7, 0xC3, 0x80, 0x1F, 0x3F, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 - 0xF0, 0xF8, 0x3C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0x0F, 0x1F, 0x3C, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0xCC, 0xFF, 0xFF, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x3C, 0x1F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0x80, 0x80, 0x80, 0x07, 0x07, 0x07, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, // 58 - 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x03, 0x07, 0x07, 0x07, 0x00, 0xC0, 0xF0, 0xF0, 0x30, 0x0C, 0x0F, 0x07, 0x00, 0x00, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x30, 0x38, 0x78, 0x6C, 0xCC, 0xC6, 0x86, 0x83, 0x83, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x83, 0x83, 0x86, 0xC6, 0xCC, 0x6C, 0x78, 0x38, 0x30, 0x0E, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 - 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x9C, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0xF0, 0xF1, 0xF1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 - 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x0C, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x00, 0xF8, 0xFF, 0x07, 0x01, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFE, 0x07, 0x3F, 0x7C, 0xE0, 0xC0, 0x80, 0x00, 0x07, 0x0F, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x07, 0x07, 0x0F, 0x18, 0x18, 0x18, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3E, 0x3E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFF, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xFF, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 - 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x3C, 0xFC, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x77, 0xE7, 0xE3, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0x00, 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3E, 0x78, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 - 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 - 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0x00, 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x01, 0x07, 0x1F, 0x3E, 0x38, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 - 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 73 - 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x38, 0x1F, 0x0F, 0x03, // 74 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x38, 0x1C, 0x3F, 0xFF, 0xE3, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0x3C, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 - 0xFE, 0xFE, 0xEE, 0x3E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3E, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x07, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x1F, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x3F, 0xFC, 0xF0, 0xFC, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 - 0xFE, 0xFE, 0x1E, 0x3C, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3E, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3E, 0x78, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 - 0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x07, 0x1F, 0x3E, 0x38, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 - 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x7C, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x38, 0x3E, 0x1F, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x07, 0x1F, 0x3E, 0x38, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x1E, 0x1C, 0x18, 0x10, 0x00, 0x00, // 81 - 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xFC, 0xF8, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0xF0, 0xD8, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7E, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0xF0, 0xF8, 0xFC, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x04, 0x01, 0x07, 0x0F, 0x0E, 0x1C, 0x1C, 0x18, 0x38, 0x30, 0x70, 0x70, 0xE0, 0xC0, 0x80, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x79, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 - 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x3F, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 - 0x02, 0x1E, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xE0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 - 0x1E, 0xFE, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x3E, 0x7E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFE, 0x1E, 0x00, 0x01, 0x1F, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0xFC, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 - 0x00, 0x02, 0x0E, 0x3E, 0x78, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x78, 0x1E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0x7E, 0x7E, 0xFF, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0x7C, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0x02, 0x0E, 0x3E, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x3E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7C, 0xF0, 0xF0, 0x7C, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xF6, 0xFE, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xFC, 0xFE, 0xCF, 0xC7, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, // 91 - 0x0E, 0x7E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 - 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, // 93 - 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1E, 0x0E, 0x3C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3C, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 95 - 0x01, 0x03, 0x07, 0x0E, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x83, 0x83, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3, 0xC7, 0xFF, 0xFE, 0x3F, 0x7F, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xF8, 0xFF, 0xFF, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xF8, 0xFC, 0x3E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x0F, 0x1F, 0x3E, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF8, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3E, 0xFF, 0xFF, 0x0F, 0x1F, 0x7F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xC7, 0xC3, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3, 0xC3, 0xDF, 0xFE, 0xF8, 0x0F, 0x1F, 0x3F, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 - 0x00, 0x00, 0x80, 0x80, 0xFC, 0xFE, 0x8F, 0x83, 0x83, 0x83, 0x83, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x7C, 0xFE, 0xFF, 0x83, 0x01, 0x01, 0x01, 0x01, 0x01, 0x83, 0xEF, 0xFF, 0x7D, 0x01, 0x01, 0x00, 0x00, 0xB8, 0xFD, 0xE7, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0xC0, 0x80, 0x80, 0x00, 0x3E, 0x7F, 0x73, 0xE1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x7F, 0x3F, 0x1F, // 103 - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 - 0x04, 0x8E, 0x8E, 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 - 0x00, 0x00, 0x04, 0x8E, 0x8E, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, 0x00, // 106 - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x80, 0xC0, 0xE0, 0xF0, 0xB8, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, // 108 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFC, 0x1E, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x3E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3E, 0xFC, 0xF8, 0x07, 0x1F, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3E, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xF8, 0xFF, 0xFF, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x7F, 0x1F, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0xF8, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3E, 0xFF, 0xFF, 0x0F, 0x1F, 0x7F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // 113 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x1C, 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3E, 0x7F, 0x73, 0xE1, 0xC1, 0xC1, 0xC1, 0x81, 0x81, 0x03, 0x03, 0x00, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0x63, 0x7F, 0x3E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0x00, 0x80, 0x80, 0xE0, 0xF8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x7F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFE, 0xF0, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 - 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x7F, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x1F, 0x03, 0x3F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xF0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xF0, 0xFF, 0x3F, 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, 0x00, 0x00, 0x00, 0x00, // 119 - 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x01, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x1E, 0x0F, 0x07, 0x01, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x1F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7E, 0xF0, 0xE0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 - 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x01, 0x81, 0xE1, 0xF1, 0x79, 0x1F, 0x0F, 0x03, 0x01, 0xC0, 0xE0, 0xF8, 0xFC, 0xCF, 0xC7, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x1C, 0x0E, 0x06, 0x06, 0xC0, 0xC0, 0xE0, 0xF0, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x1C, 0x18, 0x18, // 123 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 124 - 0x06, 0x06, 0x0E, 0x1C, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0xF0, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x18, 0x18, 0x1C, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x70, 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, // 126 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 - -}; - -#endif + + +/* + * Open_Sans_32pt + * + * created with FontCreator 4.3 + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Open_Sans_32pt.h + * Date : 07.03.2019 + * Font size in bytes : 41286 + * Font width : 10 + * Font height : 32 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + */ + +#include +#include + +#ifndef OPEN_SANS_32PT_H +#define OPEN_SANS_32PT_H + +#define OPEN_SANS_32PT_WIDTH 10 +#define OPEN_SANS_32PT_HEIGHT 32 + +static const uint8_t Open_Sans_32pt[] PROGMEM = +{ + 0xA1, 0x46, // size + 0x0A, // width + 0x20, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x0A, 0x03, 0x09, 0x13, 0x0E, 0x16, 0x14, 0x03, 0x07, 0x07, + 0x0F, 0x10, 0x05, 0x08, 0x03, 0x0A, 0x0E, 0x08, 0x0E, 0x0F, + 0x10, 0x0E, 0x0E, 0x0F, 0x0E, 0x0E, 0x03, 0x05, 0x0E, 0x0E, + 0x0E, 0x0C, 0x19, 0x14, 0x10, 0x11, 0x12, 0x0D, 0x0D, 0x13, + 0x12, 0x03, 0x06, 0x11, 0x0D, 0x17, 0x12, 0x15, 0x0E, 0x15, + 0x10, 0x0E, 0x12, 0x11, 0x13, 0x1C, 0x12, 0x12, 0x10, 0x07, + 0x0B, 0x07, 0x0F, 0x0E, 0x06, 0x0D, 0x0F, 0x0C, 0x0F, 0x0E, + 0x0B, 0x10, 0x0E, 0x04, 0x06, 0x0D, 0x02, 0x18, 0x0E, 0x0F, + 0x0F, 0x0F, 0x09, 0x0C, 0x0A, 0x0E, 0x10, 0x19, 0x0F, 0x10, + 0x0D, 0x0A, 0x02, 0x0A, 0x0E, 0x0D, + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 32 + 0xFE, 0xFE, 0xFE, 0x7F, 0xFF, 0x07, 0xF0, 0xF1, 0xF0, 0x00, 0x00, 0x00, // 33 + 0x3E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0x3E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x1E, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x83, 0xC3, 0xFF, 0xFF, 0x83, 0x83, 0x83, 0x83, 0xC3, 0xFF, 0xFF, 0x83, 0x83, 0x83, 0x83, 0x03, 0x01, 0x01, 0x01, 0xF1, 0xFF, 0x0F, 0x01, 0x01, 0x01, 0x01, 0xF1, 0xFF, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0x80, 0xE0, 0xF0, 0x30, 0x38, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x38, 0x30, 0x00, 0x01, 0x07, 0x0F, 0x0C, 0x18, 0x18, 0xFF, 0xFF, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0xFF, 0xFF, 0x60, 0x70, 0x30, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x06, 0x3C, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x70, 0x60, 0x60, 0x60, 0x3C, 0x1F, 0x87, 0xE0, 0xF8, 0x3C, 0x0F, 0xC3, 0xF0, 0x78, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0x78, 0xC0, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0x00, 0x00, 0xF8, 0xFC, 0x9C, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0xFC, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE1, 0x73, 0x37, 0x3E, 0x3C, 0x7C, 0x7E, 0xE7, 0xC7, 0x83, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0x00, 0x1F, 0x3F, 0x79, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x61, 0x63, 0x77, 0x3E, 0x1C, 0x3E, 0x77, 0xE3, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0x3E, 0xFE, 0x7E, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x80, 0xE0, 0xF8, 0x3E, 0x0E, 0x02, 0xF8, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x07, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1F, 0x1C, 0x10, // 40 + 0x02, 0x0E, 0x3E, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x7F, 0x07, 0x10, 0x1C, 0x1F, 0x07, 0x03, 0x00, 0x00, // 41 + 0x40, 0x60, 0x60, 0x60, 0x60, 0xC0, 0xC1, 0xFF, 0xFF, 0xC0, 0xC0, 0x60, 0x60, 0x60, 0x70, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3E, 0x07, 0x01, 0x03, 0x0F, 0x3E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0x10, 0x0C, 0x0F, 0x07, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7E, 0x0E, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0xE0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0xC0, 0xF0, 0xF8, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x1F, 0x3E, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3E, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x20, 0x70, 0x38, 0x18, 0x0C, 0x8E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x08, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x00, 0xE0, 0xF0, 0xF8, 0xDC, 0xCE, 0xC7, 0xC3, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x00, 0x08, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, 0x3C, 0x77, 0xE7, 0xE3, 0x80, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0xFE, 0xFE, 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xE0, 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3C, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0xC0, 0xF0, 0x78, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0xEF, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x38, 0xF0, 0xE0, 0x07, 0x1F, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x78, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xFE, 0x7E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0xE0, 0xF8, 0xFC, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF8, 0xE0, 0x80, 0xC3, 0xE7, 0x7E, 0x3C, 0x1C, 0x18, 0x18, 0x3C, 0x3C, 0x67, 0xE7, 0xC3, 0x80, 0x1F, 0x3F, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0xF0, 0xF8, 0x3C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0x0F, 0x1F, 0x3C, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x30, 0xCC, 0xFF, 0xFF, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x3C, 0x1F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x80, 0x80, 0x80, 0x07, 0x07, 0x07, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x03, 0x07, 0x07, 0x07, 0x00, 0xC0, 0xF0, 0xF0, 0x30, 0x0C, 0x0F, 0x07, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x30, 0x38, 0x78, 0x6C, 0xCC, 0xC6, 0x86, 0x83, 0x83, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x83, 0x83, 0x86, 0xC6, 0xCC, 0x6C, 0x78, 0x38, 0x30, 0x0E, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x9C, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0xF0, 0xF1, 0xF1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x0C, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x00, 0xF8, 0xFF, 0x07, 0x01, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0xF1, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFE, 0x07, 0x3F, 0x7C, 0xE0, 0xC0, 0x80, 0x00, 0x07, 0x0F, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x07, 0x07, 0x0F, 0x18, 0x18, 0x18, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3E, 0x3E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFF, 0xC7, 0xC0, 0xC0, 0xC0, 0xC0, 0xC7, 0xFF, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x3C, 0xFC, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x77, 0xE7, 0xE3, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3E, 0x78, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0xF0, 0x01, 0x07, 0x1F, 0x3E, 0x38, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x38, 0x1F, 0x0F, 0x03, // 74 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x38, 0x1C, 0x3F, 0xFF, 0xE3, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1E, 0x3C, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0xFE, 0xFE, 0xEE, 0x3E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3E, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x07, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x1F, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x3F, 0xFC, 0xF0, 0xFC, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xFE, 0xFE, 0x1E, 0x3C, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x3E, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3E, 0x78, 0xF3, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x07, 0x1F, 0x3E, 0x38, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 79 + 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x7C, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x30, 0x38, 0x3E, 0x1F, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0xC0, 0xF0, 0xF8, 0x38, 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x38, 0xF8, 0xF0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x07, 0x1F, 0x3E, 0x38, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x1E, 0x1C, 0x18, 0x10, 0x00, 0x00, // 81 + 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xFC, 0xF8, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0xF0, 0xD8, 0x1C, 0x0F, 0x07, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7E, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0xF0, 0xF8, 0xFC, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x04, 0x01, 0x07, 0x0F, 0x0E, 0x1C, 0x1C, 0x18, 0x38, 0x30, 0x70, 0x70, 0xE0, 0xC0, 0x80, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x79, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x3F, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x3F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x02, 0x1E, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0xE0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x1E, 0xFE, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x3E, 0x7E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFE, 0x1E, 0x00, 0x01, 0x1F, 0xFF, 0xFC, 0xC0, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0xC0, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0xFC, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xFC, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 87 + 0x00, 0x02, 0x0E, 0x3E, 0x78, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x78, 0x1E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0x7E, 0x7E, 0xFF, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0x7C, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x02, 0x0E, 0x3E, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x7C, 0x3E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7C, 0xF0, 0xF0, 0x7C, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xC6, 0xF6, 0xFE, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xFC, 0xFE, 0xCF, 0xC7, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, // 91 + 0x0E, 0x7E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, // 93 + 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1E, 0x0E, 0x3C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3C, 0x70, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // 95 + 0x01, 0x03, 0x07, 0x0E, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x83, 0x83, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3, 0xC7, 0xFF, 0xFE, 0x3F, 0x7F, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x38, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xF8, 0xFF, 0xFF, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xF8, 0xFC, 0x3E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x0F, 0x1F, 0x3E, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF8, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3E, 0xFF, 0xFF, 0x0F, 0x1F, 0x7F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xC7, 0xC3, 0xC1, 0xC1, 0xC1, 0xC1, 0xC3, 0xC3, 0xDF, 0xFE, 0xF8, 0x0F, 0x1F, 0x3F, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x00, 0x00, 0x80, 0x80, 0xFC, 0xFE, 0x8F, 0x83, 0x83, 0x83, 0x83, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x7C, 0xFE, 0xFF, 0x83, 0x01, 0x01, 0x01, 0x01, 0x01, 0x83, 0xEF, 0xFF, 0x7D, 0x01, 0x01, 0x00, 0x00, 0xB8, 0xFD, 0xE7, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0xC0, 0x80, 0x80, 0x00, 0x3E, 0x7F, 0x73, 0xE1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x7F, 0x3F, 0x1F, // 103 + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x04, 0x8E, 0x8E, 0x04, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x04, 0x8E, 0x8E, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, 0x00, // 106 + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x80, 0xC0, 0xE0, 0xF0, 0xB8, 0x1C, 0x0E, 0x07, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, // 108 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFC, 0x1E, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1C, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x3E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3E, 0xFC, 0xF8, 0x07, 0x1F, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3E, 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1E, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xFF, 0xFE, 0xF8, 0xFF, 0xFF, 0x3E, 0x70, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x7F, 0x1F, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0xF8, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3E, 0xFF, 0xFF, 0x0F, 0x1F, 0x7F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3E, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // 113 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0x1C, 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x3E, 0x7F, 0x73, 0xE1, 0xC1, 0xC1, 0xC1, 0x81, 0x81, 0x03, 0x03, 0x00, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0x63, 0x7F, 0x3E, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x00, 0x80, 0x80, 0xE0, 0xF8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x7F, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3C, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x3F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0xFE, 0xF0, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x7F, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x1F, 0x03, 0x3F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xF0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xF0, 0xFF, 0x3F, 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, 0x00, 0x00, 0x00, 0x00, // 119 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x01, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x1E, 0x0F, 0x07, 0x01, 0x07, 0x0F, 0x1E, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x1F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7E, 0xF0, 0xE0, 0xFE, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x3C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x01, 0x81, 0xE1, 0xF1, 0x79, 0x1F, 0x0F, 0x03, 0x01, 0xC0, 0xE0, 0xF8, 0xFC, 0xCF, 0xC7, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0x1C, 0x0E, 0x06, 0x06, 0xC0, 0xC0, 0xE0, 0xF0, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0E, 0x1C, 0x18, 0x18, // 123 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 124 + 0x06, 0x06, 0x0E, 0x1C, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0xF0, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x18, 0x18, 0x1C, 0x0E, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x70, 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, // 126 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/SystemFont5x7.h b/lib/BrbDisplayBase/fonts/SystemFont5x7.h index cdf239c..a9a970e 100644 --- a/lib/BrbDisplayBase/fonts/SystemFont5x7.h +++ b/lib/BrbDisplayBase/fonts/SystemFont5x7.h @@ -1,157 +1,157 @@ -/* - * - * System5x7 - * - * - * File Name : System5x7.h - * Date : 28 Oct 2008 - * Font size in bytes : 470 - * Font width : 5 - * Font height : 7 - * Font first char : 32 - * Font last char : 127 - * Font used chars : 94 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef SYSTEM5x7_H -#define SYSTEM5x7_H - -#define SYSTEM5x7_WIDTH 5 -#define SYSTEM5x7_HEIGHT 7 - -/* - * added to allow fontname to match header file name. - * as well as keep the old name for backward compatibility - */ - -#define SystemFont5x7 System5x7 - -static const uint8_t System5x7[] PROGMEM = { - 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height - 0x05, // width - 0x07, // height - 0x20, // first char - 0x60, // char count - - // Fixed width; char width table not used !!!! - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00,// (space) - 0x00, 0x00, 0x5F, 0x00, 0x00,// ! - 0x00, 0x07, 0x00, 0x07, 0x00,// " - 0x14, 0x7F, 0x14, 0x7F, 0x14,// # - 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ - 0x23, 0x13, 0x08, 0x64, 0x62,// % - 0x36, 0x49, 0x55, 0x22, 0x50,// & - 0x00, 0x05, 0x03, 0x00, 0x00,// ' - 0x00, 0x1C, 0x22, 0x41, 0x00,// ( - 0x00, 0x41, 0x22, 0x1C, 0x00,// ) - 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * - 0x08, 0x08, 0x3E, 0x08, 0x08,// + - 0x00, 0x50, 0x30, 0x00, 0x00,// , - 0x08, 0x08, 0x08, 0x08, 0x08,// - - 0x00, 0x60, 0x60, 0x00, 0x00,// . - 0x20, 0x10, 0x08, 0x04, 0x02,// / - 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 - 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 - 0x42, 0x61, 0x51, 0x49, 0x46,// 2 - 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 - 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 - 0x27, 0x45, 0x45, 0x45, 0x39,// 5 - 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 - 0x01, 0x71, 0x09, 0x05, 0x03,// 7 - 0x36, 0x49, 0x49, 0x49, 0x36,// 8 - 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 - 0x00, 0x36, 0x36, 0x00, 0x00,// : - 0x00, 0x56, 0x36, 0x00, 0x00,// ; - 0x00, 0x08, 0x14, 0x22, 0x41,// < - 0x14, 0x14, 0x14, 0x14, 0x14,// = - 0x41, 0x22, 0x14, 0x08, 0x00,// > - 0x02, 0x01, 0x51, 0x09, 0x06,// ? - 0x32, 0x49, 0x79, 0x41, 0x3E,// @ - 0x7E, 0x11, 0x11, 0x11, 0x7E,// A - 0x7F, 0x49, 0x49, 0x49, 0x36,// B - 0x3E, 0x41, 0x41, 0x41, 0x22,// C - 0x7F, 0x41, 0x41, 0x22, 0x1C,// D - 0x7F, 0x49, 0x49, 0x49, 0x41,// E - 0x7F, 0x09, 0x09, 0x01, 0x01,// F - 0x3E, 0x41, 0x41, 0x51, 0x32,// G - 0x7F, 0x08, 0x08, 0x08, 0x7F,// H - 0x00, 0x41, 0x7F, 0x41, 0x00,// I - 0x20, 0x40, 0x41, 0x3F, 0x01,// J - 0x7F, 0x08, 0x14, 0x22, 0x41,// K - 0x7F, 0x40, 0x40, 0x40, 0x40,// L - 0x7F, 0x02, 0x04, 0x02, 0x7F,// M - 0x7F, 0x04, 0x08, 0x10, 0x7F,// N - 0x3E, 0x41, 0x41, 0x41, 0x3E,// O - 0x7F, 0x09, 0x09, 0x09, 0x06,// P - 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q - 0x7F, 0x09, 0x19, 0x29, 0x46,// R - 0x46, 0x49, 0x49, 0x49, 0x31,// S - 0x01, 0x01, 0x7F, 0x01, 0x01,// T - 0x3F, 0x40, 0x40, 0x40, 0x3F,// U - 0x1F, 0x20, 0x40, 0x20, 0x1F,// V - 0x7F, 0x20, 0x18, 0x20, 0x7F,// W - 0x63, 0x14, 0x08, 0x14, 0x63,// X - 0x03, 0x04, 0x78, 0x04, 0x03,// Y - 0x61, 0x51, 0x49, 0x45, 0x43,// Z - 0x00, 0x00, 0x7F, 0x41, 0x41,// [ - 0x02, 0x04, 0x08, 0x10, 0x20,// "\" - 0x41, 0x41, 0x7F, 0x00, 0x00,// ] - 0x04, 0x02, 0x01, 0x02, 0x04,// ^ - 0x40, 0x40, 0x40, 0x40, 0x40,// _ - 0x00, 0x01, 0x02, 0x04, 0x00,// ` - 0x20, 0x54, 0x54, 0x54, 0x78,// a - 0x7F, 0x48, 0x44, 0x44, 0x38,// b - 0x38, 0x44, 0x44, 0x44, 0x20,// c - 0x38, 0x44, 0x44, 0x48, 0x7F,// d - 0x38, 0x54, 0x54, 0x54, 0x18,// e - 0x08, 0x7E, 0x09, 0x01, 0x02,// f - 0x08, 0x14, 0x54, 0x54, 0x3C,// g - 0x7F, 0x08, 0x04, 0x04, 0x78,// h - 0x00, 0x44, 0x7D, 0x40, 0x00,// i - 0x20, 0x40, 0x44, 0x3D, 0x00,// j - 0x00, 0x7F, 0x10, 0x28, 0x44,// k - 0x00, 0x41, 0x7F, 0x40, 0x00,// l - 0x7C, 0x04, 0x18, 0x04, 0x78,// m - 0x7C, 0x08, 0x04, 0x04, 0x78,// n - 0x38, 0x44, 0x44, 0x44, 0x38,// o - 0x7C, 0x14, 0x14, 0x14, 0x08,// p - 0x08, 0x14, 0x14, 0x18, 0x7C,// q - 0x7C, 0x08, 0x04, 0x04, 0x08,// r - 0x48, 0x54, 0x54, 0x54, 0x20,// s - 0x04, 0x3F, 0x44, 0x40, 0x20,// t - 0x3C, 0x40, 0x40, 0x20, 0x7C,// u - 0x1C, 0x20, 0x40, 0x20, 0x1C,// v - 0x3C, 0x40, 0x30, 0x40, 0x3C,// w - 0x44, 0x28, 0x10, 0x28, 0x44,// x - 0x0C, 0x50, 0x50, 0x50, 0x3C,// y - 0x44, 0x64, 0x54, 0x4C, 0x44,// z - 0x00, 0x08, 0x36, 0x41, 0x00,// { - 0x00, 0x00, 0x7F, 0x00, 0x00,// | - 0x00, 0x41, 0x36, 0x08, 0x00,// } - 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> - 0x08, 0x1C, 0x2A, 0x08, 0x08 // <- - -}; - -#endif +/* + * + * System5x7 + * + * + * File Name : System5x7.h + * Date : 28 Oct 2008 + * Font size in bytes : 470 + * Font width : 5 + * Font height : 7 + * Font first char : 32 + * Font last char : 127 + * Font used chars : 94 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef SYSTEM5x7_H +#define SYSTEM5x7_H + +#define SYSTEM5x7_WIDTH 5 +#define SYSTEM5x7_HEIGHT 7 + +/* + * added to allow fontname to match header file name. + * as well as keep the old name for backward compatibility + */ + +#define SystemFont5x7 System5x7 + +static const uint8_t System5x7[] PROGMEM = { + 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height + 0x05, // width + 0x07, // height + 0x20, // first char + 0x60, // char count + + // Fixed width; char width table not used !!!! + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00,// (space) + 0x00, 0x00, 0x5F, 0x00, 0x00,// ! + 0x00, 0x07, 0x00, 0x07, 0x00,// " + 0x14, 0x7F, 0x14, 0x7F, 0x14,// # + 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ + 0x23, 0x13, 0x08, 0x64, 0x62,// % + 0x36, 0x49, 0x55, 0x22, 0x50,// & + 0x00, 0x05, 0x03, 0x00, 0x00,// ' + 0x00, 0x1C, 0x22, 0x41, 0x00,// ( + 0x00, 0x41, 0x22, 0x1C, 0x00,// ) + 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * + 0x08, 0x08, 0x3E, 0x08, 0x08,// + + 0x00, 0x50, 0x30, 0x00, 0x00,// , + 0x08, 0x08, 0x08, 0x08, 0x08,// - + 0x00, 0x60, 0x60, 0x00, 0x00,// . + 0x20, 0x10, 0x08, 0x04, 0x02,// / + 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 + 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 + 0x42, 0x61, 0x51, 0x49, 0x46,// 2 + 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 + 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 + 0x27, 0x45, 0x45, 0x45, 0x39,// 5 + 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 + 0x01, 0x71, 0x09, 0x05, 0x03,// 7 + 0x36, 0x49, 0x49, 0x49, 0x36,// 8 + 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 + 0x00, 0x36, 0x36, 0x00, 0x00,// : + 0x00, 0x56, 0x36, 0x00, 0x00,// ; + 0x00, 0x08, 0x14, 0x22, 0x41,// < + 0x14, 0x14, 0x14, 0x14, 0x14,// = + 0x41, 0x22, 0x14, 0x08, 0x00,// > + 0x02, 0x01, 0x51, 0x09, 0x06,// ? + 0x32, 0x49, 0x79, 0x41, 0x3E,// @ + 0x7E, 0x11, 0x11, 0x11, 0x7E,// A + 0x7F, 0x49, 0x49, 0x49, 0x36,// B + 0x3E, 0x41, 0x41, 0x41, 0x22,// C + 0x7F, 0x41, 0x41, 0x22, 0x1C,// D + 0x7F, 0x49, 0x49, 0x49, 0x41,// E + 0x7F, 0x09, 0x09, 0x01, 0x01,// F + 0x3E, 0x41, 0x41, 0x51, 0x32,// G + 0x7F, 0x08, 0x08, 0x08, 0x7F,// H + 0x00, 0x41, 0x7F, 0x41, 0x00,// I + 0x20, 0x40, 0x41, 0x3F, 0x01,// J + 0x7F, 0x08, 0x14, 0x22, 0x41,// K + 0x7F, 0x40, 0x40, 0x40, 0x40,// L + 0x7F, 0x02, 0x04, 0x02, 0x7F,// M + 0x7F, 0x04, 0x08, 0x10, 0x7F,// N + 0x3E, 0x41, 0x41, 0x41, 0x3E,// O + 0x7F, 0x09, 0x09, 0x09, 0x06,// P + 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q + 0x7F, 0x09, 0x19, 0x29, 0x46,// R + 0x46, 0x49, 0x49, 0x49, 0x31,// S + 0x01, 0x01, 0x7F, 0x01, 0x01,// T + 0x3F, 0x40, 0x40, 0x40, 0x3F,// U + 0x1F, 0x20, 0x40, 0x20, 0x1F,// V + 0x7F, 0x20, 0x18, 0x20, 0x7F,// W + 0x63, 0x14, 0x08, 0x14, 0x63,// X + 0x03, 0x04, 0x78, 0x04, 0x03,// Y + 0x61, 0x51, 0x49, 0x45, 0x43,// Z + 0x00, 0x00, 0x7F, 0x41, 0x41,// [ + 0x02, 0x04, 0x08, 0x10, 0x20,// "\" + 0x41, 0x41, 0x7F, 0x00, 0x00,// ] + 0x04, 0x02, 0x01, 0x02, 0x04,// ^ + 0x40, 0x40, 0x40, 0x40, 0x40,// _ + 0x00, 0x01, 0x02, 0x04, 0x00,// ` + 0x20, 0x54, 0x54, 0x54, 0x78,// a + 0x7F, 0x48, 0x44, 0x44, 0x38,// b + 0x38, 0x44, 0x44, 0x44, 0x20,// c + 0x38, 0x44, 0x44, 0x48, 0x7F,// d + 0x38, 0x54, 0x54, 0x54, 0x18,// e + 0x08, 0x7E, 0x09, 0x01, 0x02,// f + 0x08, 0x14, 0x54, 0x54, 0x3C,// g + 0x7F, 0x08, 0x04, 0x04, 0x78,// h + 0x00, 0x44, 0x7D, 0x40, 0x00,// i + 0x20, 0x40, 0x44, 0x3D, 0x00,// j + 0x00, 0x7F, 0x10, 0x28, 0x44,// k + 0x00, 0x41, 0x7F, 0x40, 0x00,// l + 0x7C, 0x04, 0x18, 0x04, 0x78,// m + 0x7C, 0x08, 0x04, 0x04, 0x78,// n + 0x38, 0x44, 0x44, 0x44, 0x38,// o + 0x7C, 0x14, 0x14, 0x14, 0x08,// p + 0x08, 0x14, 0x14, 0x18, 0x7C,// q + 0x7C, 0x08, 0x04, 0x04, 0x08,// r + 0x48, 0x54, 0x54, 0x54, 0x20,// s + 0x04, 0x3F, 0x44, 0x40, 0x20,// t + 0x3C, 0x40, 0x40, 0x20, 0x7C,// u + 0x1C, 0x20, 0x40, 0x20, 0x1C,// v + 0x3C, 0x40, 0x30, 0x40, 0x3C,// w + 0x44, 0x28, 0x10, 0x28, 0x44,// x + 0x0C, 0x50, 0x50, 0x50, 0x3C,// y + 0x44, 0x64, 0x54, 0x4C, 0x44,// z + 0x00, 0x08, 0x36, 0x41, 0x00,// { + 0x00, 0x00, 0x7F, 0x00, 0x00,// | + 0x00, 0x41, 0x36, 0x08, 0x00,// } + 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> + 0x08, 0x1C, 0x2A, 0x08, 0x08 // <- + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/Tahoma24.h b/lib/BrbDisplayBase/fonts/Tahoma24.h index 7ef5c15..6522796 100644 --- a/lib/BrbDisplayBase/fonts/Tahoma24.h +++ b/lib/BrbDisplayBase/fonts/Tahoma24.h @@ -1,166 +1,166 @@ - - -/* - * - * Tahoma24 - * - * created with FontCreator - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : Tahoma24 - * Date : 27.01.2019 - * Font size in bytes : 23958 - * Font width : 10 - * Font height : 24 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef TAHOMA24_H -#define TAHOMA24_H - -#define TAHOMA24_WIDTH 10 -#define TAHOMA24_HEIGHT 24 - -static const uint8_t Tahoma24[] PROGMEM = { - 0x5D, 0x96, // size - 0x0A, // width - 0x18, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x00, 0x02, 0x06, 0x0F, 0x0B, 0x15, 0x0F, 0x02, 0x07, 0x07, - 0x0A, 0x0E, 0x05, 0x07, 0x03, 0x09, 0x0B, 0x08, 0x0B, 0x0B, - 0x0C, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x03, 0x05, 0x0D, 0x0D, - 0x0D, 0x09, 0x13, 0x0E, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B, 0x0E, - 0x0C, 0x06, 0x08, 0x0C, 0x0A, 0x0F, 0x0C, 0x0F, 0x0B, 0x0F, - 0x0D, 0x0B, 0x0E, 0x0C, 0x0E, 0x16, 0x0E, 0x0E, 0x0B, 0x06, - 0x08, 0x06, 0x0E, 0x0D, 0x05, 0x0A, 0x0A, 0x09, 0x0A, 0x0B, - 0x07, 0x0A, 0x09, 0x02, 0x05, 0x0A, 0x02, 0x10, 0x09, 0x0B, - 0x0A, 0x0A, 0x07, 0x0A, 0x07, 0x09, 0x0C, 0x12, 0x0C, 0x0C, - 0x09, 0x0A, 0x02, 0x0A, 0x0D, 0x12, - - // font data - 0xFE, 0xFE, 0x3F, 0x3F, 0x06, 0x06, // 33 - 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xF8, 0xFE, 0xCE, 0xC0, 0xC0, 0xF8, 0xFE, 0xC6, 0xC0, 0xC0, 0x30, 0x30, 0x30, 0xF0, 0xFF, 0x3F, 0x30, 0x30, 0xF0, 0xFF, 0x3F, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x01, 0x00, 0x00, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 - 0xC0, 0xE0, 0x60, 0x30, 0x30, 0xFE, 0x30, 0x30, 0x30, 0x60, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0xFF, 0x18, 0x18, 0x18, 0xF0, 0xE0, 0x03, 0x07, 0x06, 0x06, 0x06, 0x7F, 0x06, 0x06, 0x03, 0x03, 0x00, // 36 - 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 0xC1, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 0x01, // 37 - 0x00, 0x78, 0xFC, 0x8E, 0x06, 0x06, 0x06, 0x8E, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x8C, 0x07, 0x03, 0x07, 0x0F, 0x1D, 0x38, 0x70, 0xE0, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x03, 0x07, 0x06, // 38 - 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, // 39 - 0x00, 0xE0, 0xF8, 0x1E, 0x07, 0x03, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x78, 0xE0, 0xC0, 0x80, // 40 - 0x01, 0x03, 0x07, 0x1E, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xC0, 0xE0, 0x78, 0x1F, 0x07, 0x01, // 41 - 0x8C, 0x88, 0xD8, 0x50, 0xFF, 0xFF, 0x50, 0xD8, 0x88, 0x8C, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3F, 0x0F, 0x01, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x1F, 0x03, 0x00, 0x00, 0x80, 0xF8, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0xE0, 0xF8, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xE0, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 48 - 0x18, 0x18, 0x18, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, // 49 - 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0C, 0xFC, 0xF0, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x03, 0x01, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 50 - 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x86, 0x8C, 0xFC, 0x78, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x85, 0xFC, 0xF8, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 51 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x30, 0x18, 0x0C, 0xFE, 0xFE, 0x00, 0x00, 0x1C, 0x1E, 0x1B, 0x19, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // 52 - 0x00, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x86, 0xFE, 0xF8, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 53 - 0x80, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x7F, 0xFF, 0x86, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0xFE, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 54 - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xF6, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 - 0x70, 0xFC, 0x8C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x8C, 0xFC, 0x78, 0xF0, 0xFD, 0x8D, 0x03, 0x03, 0x06, 0x06, 0x07, 0x0D, 0xF8, 0xF0, 0x00, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 56 - 0xF0, 0xF8, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xE0, 0x01, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xE6, 0xFF, 0x1F, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, // 57 - 0xC0, 0xC0, 0xC0, 0x01, 0x01, 0x01, 0x07, 0x07, 0x07, // 58 - 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xC0, 0xFC, 0x3F, 0x0F, 0x01, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x60, 0x08, 0x1C, 0x1C, 0x36, 0x36, 0x63, 0x63, 0xC1, 0xC1, 0xC1, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0x60, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0x63, 0x63, 0x36, 0x36, 0x1C, 0x1C, 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 - 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, // 63 - 0x00, 0xC0, 0xF0, 0x38, 0x18, 0x0C, 0x8C, 0x86, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCC, 0x1C, 0x38, 0xF0, 0xE0, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0xFF, 0xC1, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xFF, 0x3F, 0x00, 0x01, 0x07, 0x0E, 0x0C, 0x18, 0x18, 0x31, 0x31, 0x31, 0x31, 0x30, 0x31, 0x39, 0x01, 0x01, 0x01, 0x01, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x0E, 0x0E, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3F, 0x37, 0x30, 0x30, 0x30, 0x30, 0x37, 0x3F, 0xF8, 0xC0, 0x00, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, // 65 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x8E, 0xFC, 0x78, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x86, 0xFC, 0xF8, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 66 - 0xC0, 0xF0, 0x78, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, // 67 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, // 68 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 69 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0x80, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x02, 0x03, 0x03, // 71 - 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 72 - 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, // 73 - 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, // 74 - 0xFE, 0xFE, 0x00, 0x00, 0x80, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0xFF, 0xFF, 0x06, 0x07, 0x0F, 0x1C, 0x78, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x04, // 75 - 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 76 - 0xFE, 0xFE, 0x1E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7C, 0x1E, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x1E, 0x38, 0x1E, 0x07, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 77 - 0xFE, 0xFE, 0x1E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7C, 0xF0, 0xC0, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, // 78 - 0xC0, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, // 79 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xF0, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0xC0, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x1E, 0x7E, 0xE3, 0xC3, 0xC1, 0xC0, 0xC0, // 81 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x76, 0xE7, 0x83, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x04, // 82 - 0xF0, 0xFC, 0x8C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x00, 0x80, 0x03, 0x03, 0x07, 0x07, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF0, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 83 - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 - 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 85 - 0x06, 0x3E, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3E, 0x06, 0x00, 0x00, 0x01, 0x0F, 0x7E, 0xF0, 0x80, 0x80, 0xF0, 0x7E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 - 0x06, 0x7E, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3E, 0x3E, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0x7E, 0x06, 0x00, 0x00, 0x07, 0x3F, 0xF8, 0x80, 0x80, 0xF8, 0x1F, 0x01, 0x00, 0x00, 0x03, 0x1F, 0xFC, 0x80, 0x80, 0xF8, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, // 87 - 0x02, 0x06, 0x1C, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0xC0, 0xE0, 0x38, 0x1C, 0x06, 0x02, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x39, 0x0F, 0x0F, 0x39, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, // 88 - 0x02, 0x0E, 0x1E, 0x78, 0xE0, 0x80, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x1E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xE6, 0x76, 0x1E, 0x0E, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 90 - 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, // 91 - 0x03, 0x1F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x7F, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7C, // 92 - 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, // 93 - 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x1C, 0x0E, 0x0E, 0x1C, 0x30, 0xE0, 0xC0, 0x00, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, // 95 - 0x01, 0x03, 0x07, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xE0, 0xF1, 0x30, 0x38, 0x18, 0x18, 0x18, 0x19, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x07, 0x07, // 97 - 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0x7E, 0x07, 0x07, 0x02, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 98 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFE, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, // 99 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFC, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x02, 0x03, 0x07, 0x07, // 100 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x7C, 0xFF, 0x9B, 0x19, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1F, 0x9E, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, // 101 - 0xC0, 0xF8, 0xFE, 0xC7, 0xC3, 0xC3, 0xC3, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xFC, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE3, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6, 0x63, 0x7F, 0x1F, // 103 - 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 104 - 0xC6, 0xC6, 0xFF, 0xFF, 0x07, 0x07, // 105 - 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, // 106 - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x40, 0xFF, 0xFF, 0x10, 0x18, 0x3E, 0xE7, 0xC3, 0x81, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, // 107 - 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, // 108 - 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 109 - 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 110 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFE, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFE, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 111 - 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0x7E, 0xFF, 0xFF, 0x02, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 112 - 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xFC, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0xFF, 0xFF, // 113 - 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 - 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x87, 0x0F, 0x19, 0x18, 0x18, 0x30, 0x30, 0x30, 0xF1, 0xE0, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, // 115 - 0xC0, 0xFC, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, // 116 - 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x06, 0x06, 0x02, 0x03, 0x07, 0x07, // 117 - 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x03, 0x1F, 0x7C, 0xF0, 0x80, 0x80, 0xE0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, // 118 - 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x0F, 0x7F, 0xF8, 0x80, 0xC0, 0xF8, 0x1F, 0x03, 0x03, 0x1F, 0xFC, 0xE0, 0x00, 0xF0, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 119 - 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x00, 0x01, 0xC7, 0xEE, 0x38, 0x38, 0xEE, 0xC7, 0x01, 0x00, 0x00, 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, // 120 - 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x03, 0x0F, 0x7C, 0xF0, 0x80, 0x80, 0xF0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF3, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, // 121 - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0x00, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 122 - 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x07, 0x03, 0x03, 0x03, 0x18, 0x18, 0x3C, 0x7E, 0xE7, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xE0, 0xC0, 0xC0, 0xC0, // 123 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 124 - 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xE7, 0x7E, 0x3C, 0x18, 0x18, 0xC0, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3E, 0x07, 0x03, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x38, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07 // 127 - -}; - -#endif + + +/* + * + * Tahoma24 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Tahoma24 + * Date : 27.01.2019 + * Font size in bytes : 23958 + * Font width : 10 + * Font height : 24 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef TAHOMA24_H +#define TAHOMA24_H + +#define TAHOMA24_WIDTH 10 +#define TAHOMA24_HEIGHT 24 + +static const uint8_t Tahoma24[] PROGMEM = { + 0x5D, 0x96, // size + 0x0A, // width + 0x18, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x00, 0x02, 0x06, 0x0F, 0x0B, 0x15, 0x0F, 0x02, 0x07, 0x07, + 0x0A, 0x0E, 0x05, 0x07, 0x03, 0x09, 0x0B, 0x08, 0x0B, 0x0B, + 0x0C, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x03, 0x05, 0x0D, 0x0D, + 0x0D, 0x09, 0x13, 0x0E, 0x0B, 0x0C, 0x0D, 0x0A, 0x0B, 0x0E, + 0x0C, 0x06, 0x08, 0x0C, 0x0A, 0x0F, 0x0C, 0x0F, 0x0B, 0x0F, + 0x0D, 0x0B, 0x0E, 0x0C, 0x0E, 0x16, 0x0E, 0x0E, 0x0B, 0x06, + 0x08, 0x06, 0x0E, 0x0D, 0x05, 0x0A, 0x0A, 0x09, 0x0A, 0x0B, + 0x07, 0x0A, 0x09, 0x02, 0x05, 0x0A, 0x02, 0x10, 0x09, 0x0B, + 0x0A, 0x0A, 0x07, 0x0A, 0x07, 0x09, 0x0C, 0x12, 0x0C, 0x0C, + 0x09, 0x0A, 0x02, 0x0A, 0x0D, 0x12, + + // font data + 0xFE, 0xFE, 0x3F, 0x3F, 0x06, 0x06, // 33 + 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xF8, 0xFE, 0xCE, 0xC0, 0xC0, 0xF8, 0xFE, 0xC6, 0xC0, 0xC0, 0x30, 0x30, 0x30, 0xF0, 0xFF, 0x3F, 0x30, 0x30, 0xF0, 0xFF, 0x3F, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x01, 0x00, 0x00, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 35 + 0xC0, 0xE0, 0x60, 0x30, 0x30, 0xFE, 0x30, 0x30, 0x30, 0x60, 0x00, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0xFF, 0x18, 0x18, 0x18, 0xF0, 0xE0, 0x03, 0x07, 0x06, 0x06, 0x06, 0x7F, 0x06, 0x06, 0x03, 0x03, 0x00, // 36 + 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 0xC1, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0xF8, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x07, 0x03, 0x01, // 37 + 0x00, 0x78, 0xFC, 0x8E, 0x06, 0x06, 0x06, 0x8E, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0x8C, 0x07, 0x03, 0x07, 0x0F, 0x1D, 0x38, 0x70, 0xE0, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x03, 0x07, 0x06, // 38 + 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0xE0, 0xF8, 0x1E, 0x07, 0x03, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x78, 0xE0, 0xC0, 0x80, // 40 + 0x01, 0x03, 0x07, 0x1E, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x80, 0xC0, 0xE0, 0x78, 0x1F, 0x07, 0x01, // 41 + 0x8C, 0x88, 0xD8, 0x50, 0xFF, 0xFF, 0x50, 0xD8, 0x88, 0x8C, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3F, 0x0F, 0x01, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x1F, 0x03, 0x00, 0x00, 0x80, 0xF8, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0xE0, 0xF8, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xE0, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 48 + 0x18, 0x18, 0x18, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, // 49 + 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x0C, 0xFC, 0xF0, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x03, 0x01, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 50 + 0x1C, 0x0C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x86, 0x8C, 0xFC, 0x78, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x85, 0xFC, 0xF8, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 51 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x30, 0x18, 0x0C, 0xFE, 0xFE, 0x00, 0x00, 0x1C, 0x1E, 0x1B, 0x19, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, // 52 + 0x00, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x86, 0xFE, 0xF8, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 53 + 0x80, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x7F, 0xFF, 0x86, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0xFE, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 54 + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xF6, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x70, 0xFC, 0x8C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x8C, 0xFC, 0x78, 0xF0, 0xFD, 0x8D, 0x03, 0x03, 0x06, 0x06, 0x07, 0x0D, 0xF8, 0xF0, 0x00, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 56 + 0xF0, 0xF8, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xE0, 0x01, 0x07, 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xE6, 0xFF, 0x1F, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, // 57 + 0xC0, 0xC0, 0xC0, 0x01, 0x01, 0x01, 0x07, 0x07, 0x07, // 58 + 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xC0, 0xFC, 0x3F, 0x0F, 0x01, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0x60, 0x08, 0x1C, 0x1C, 0x36, 0x36, 0x63, 0x63, 0xC1, 0xC1, 0xC1, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x60, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC1, 0xC1, 0xC1, 0x63, 0x63, 0x36, 0x36, 0x1C, 0x1C, 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 62 + 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x78, 0x7C, 0x0E, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0xC0, 0xF0, 0x38, 0x18, 0x0C, 0x8C, 0x86, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCC, 0x1C, 0x38, 0xF0, 0xE0, 0x80, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0xFF, 0xC1, 0x80, 0x80, 0x80, 0xC0, 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xFF, 0x3F, 0x00, 0x01, 0x07, 0x0E, 0x0C, 0x18, 0x18, 0x31, 0x31, 0x31, 0x31, 0x30, 0x31, 0x39, 0x01, 0x01, 0x01, 0x01, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x0E, 0x0E, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0x3F, 0x37, 0x30, 0x30, 0x30, 0x30, 0x37, 0x3F, 0xF8, 0xC0, 0x00, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, // 65 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x8E, 0xFC, 0x78, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x86, 0xFC, 0xF8, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 66 + 0xC0, 0xF0, 0x78, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, // 67 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x1F, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, // 68 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 69 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x80, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0x1C, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xFC, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x02, 0x03, 0x03, // 71 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 72 + 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, // 73 + 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, // 74 + 0xFE, 0xFE, 0x00, 0x00, 0x80, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0xFF, 0xFF, 0x06, 0x07, 0x0F, 0x1C, 0x78, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x04, // 75 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 76 + 0xFE, 0xFE, 0x1E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x7C, 0x1E, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x1E, 0x38, 0x1E, 0x07, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 77 + 0xFE, 0xFE, 0x1E, 0x7C, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7C, 0xF0, 0xC0, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, // 78 + 0xC0, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, // 79 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x1C, 0xF8, 0xF0, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0x07, 0x03, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0xC0, 0xF0, 0x78, 0x1C, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x78, 0xF0, 0xC0, 0x3F, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x1E, 0x7E, 0xE3, 0xC3, 0xC1, 0xC0, 0xC0, // 81 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x76, 0xE7, 0x83, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x04, // 82 + 0xF0, 0xFC, 0x8C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x1C, 0x00, 0x80, 0x03, 0x03, 0x07, 0x07, 0x06, 0x06, 0x0E, 0x0C, 0xFC, 0xF0, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, // 83 + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 85 + 0x06, 0x3E, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3E, 0x06, 0x00, 0x00, 0x01, 0x0F, 0x7E, 0xF0, 0x80, 0x80, 0xF0, 0x7E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 86 + 0x06, 0x7E, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0x3E, 0x3E, 0xFC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0x7E, 0x06, 0x00, 0x00, 0x07, 0x3F, 0xF8, 0x80, 0x80, 0xF8, 0x1F, 0x01, 0x00, 0x00, 0x03, 0x1F, 0xFC, 0x80, 0x80, 0xF8, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, // 87 + 0x02, 0x06, 0x1C, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0xC0, 0xE0, 0x38, 0x1C, 0x06, 0x02, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x39, 0x0F, 0x0F, 0x39, 0x70, 0xC0, 0x80, 0x00, 0x00, 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, // 88 + 0x02, 0x0E, 0x1E, 0x78, 0xE0, 0x80, 0x00, 0x00, 0xC0, 0xE0, 0x78, 0x1E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xE6, 0x76, 0x1E, 0x0E, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 90 + 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, // 91 + 0x03, 0x1F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x7F, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7C, // 92 + 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, // 93 + 0x00, 0x00, 0xC0, 0xE0, 0x30, 0x1C, 0x0E, 0x0E, 0x1C, 0x30, 0xE0, 0xC0, 0x00, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, // 95 + 0x01, 0x03, 0x07, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xE0, 0xF1, 0x30, 0x38, 0x18, 0x18, 0x18, 0x19, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x07, 0x07, // 97 + 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0x7E, 0x07, 0x07, 0x02, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 98 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFE, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, // 99 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xFF, 0xFF, 0xFC, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x02, 0x03, 0x07, 0x07, // 100 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x7C, 0xFF, 0x9B, 0x19, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1F, 0x9E, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, // 101 + 0xC0, 0xF8, 0xFE, 0xC7, 0xC3, 0xC3, 0xC3, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xFC, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xE3, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6, 0x63, 0x7F, 0x1F, // 103 + 0xFF, 0xFF, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 104 + 0xC6, 0xC6, 0xFF, 0xFF, 0x07, 0x07, // 105 + 0xC0, 0xC0, 0xC0, 0xC6, 0xC6, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, // 106 + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x40, 0xFF, 0xFF, 0x10, 0x18, 0x3E, 0xE7, 0xC3, 0x81, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, // 107 + 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, // 108 + 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 109 + 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, // 110 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xFE, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFE, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 111 + 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0x7E, 0xFF, 0xFF, 0x02, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, // 112 + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0xC0, 0xC0, 0xFC, 0xFF, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0xFF, 0xFF, // 113 + 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x87, 0x0F, 0x19, 0x18, 0x18, 0x30, 0x30, 0x30, 0xF1, 0xE0, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, // 115 + 0xC0, 0xFC, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, // 116 + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x06, 0x06, 0x02, 0x03, 0x07, 0x07, // 117 + 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x03, 0x1F, 0x7C, 0xF0, 0x80, 0x80, 0xE0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, // 118 + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x0F, 0x7F, 0xF8, 0x80, 0xC0, 0xF8, 0x1F, 0x03, 0x03, 0x1F, 0xFC, 0xE0, 0x00, 0xF0, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 119 + 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x00, 0x01, 0xC7, 0xEE, 0x38, 0x38, 0xEE, 0xC7, 0x01, 0x00, 0x00, 0x04, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, // 120 + 0x40, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x40, 0x00, 0x03, 0x0F, 0x7C, 0xF0, 0x80, 0x80, 0xF0, 0x7C, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF3, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, // 121 + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0x00, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, // 122 + 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x07, 0x03, 0x03, 0x03, 0x18, 0x18, 0x3C, 0x7E, 0xE7, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xE0, 0xC0, 0xC0, 0xC0, // 123 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 124 + 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xE7, 0x7E, 0x3C, 0x18, 0x18, 0xC0, 0xC0, 0xC0, 0xE0, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3E, 0x07, 0x03, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x38, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 126 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07 // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/TrebuchetMS34.h b/lib/BrbDisplayBase/fonts/TrebuchetMS34.h index 2d0544c..5538022 100644 --- a/lib/BrbDisplayBase/fonts/TrebuchetMS34.h +++ b/lib/BrbDisplayBase/fonts/TrebuchetMS34.h @@ -1,166 +1,166 @@ - - -/* - * - * TrebuchetMS34 - * - * created with FontCreator - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : TrebuchetMS34.h - * Date : 23.02.2019 - * Font size in bytes : 44642 - * Font width : 10 - * Font height : 34 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef TREBUCHETMS34_H -#define TREBUCHETMS34_H - -#define TREBUCHETMS34_WIDTH 10 -#define TREBUCHETMS34_HEIGHT 34 - -static const uint8_t TrebuchetMS34[] PROGMEM = { - 0xAE, 0x62, // size - 0x0A, // width - 0x22, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x00, 0x05, 0x08, 0x12, 0x0D, 0x12, 0x13, 0x03, 0x06, 0x06, - 0x0B, 0x0E, 0x06, 0x07, 0x05, 0x0C, 0x10, 0x08, 0x0F, 0x0E, - 0x11, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x05, 0x06, 0x0D, 0x0E, - 0x0D, 0x0B, 0x16, 0x13, 0x10, 0x12, 0x11, 0x0F, 0x0F, 0x13, - 0x12, 0x03, 0x0C, 0x11, 0x0D, 0x18, 0x12, 0x15, 0x0F, 0x16, - 0x11, 0x0D, 0x13, 0x12, 0x13, 0x1B, 0x13, 0x13, 0x0F, 0x07, - 0x0B, 0x07, 0x0B, 0x12, 0x06, 0x0F, 0x0F, 0x0E, 0x0F, 0x10, - 0x0C, 0x0F, 0x0E, 0x06, 0x09, 0x0F, 0x06, 0x17, 0x0E, 0x10, - 0x0F, 0x0F, 0x0B, 0x0B, 0x0B, 0x0E, 0x11, 0x19, 0x11, 0x11, - 0x0F, 0x0B, 0x03, 0x0B, 0x0C, 0x0D, - - // font data - 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xCF, 0xCF, 0xCF, 0x80, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x06, 0x06, 0x86, 0xF6, 0x7F, 0x07, 0x06, 0x06, 0x06, 0x86, 0xFE, 0x7F, 0x07, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0xCC, 0xFC, 0x3F, 0x0F, 0x0C, 0x0C, 0x0C, 0xCC, 0xFC, 0x3F, 0x0F, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 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, // 35 - 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x3F, 0x3F, 0x38, 0x38, 0x38, 0x78, 0x30, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC7, 0xFF, 0xFF, 0x7C, 0x03, 0x03, 0x03, 0x07, 0x07, 0x7F, 0x7F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0xC0, 0xF0, 0x30, 0x18, 0x18, 0x18, 0x38, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x38, 0x08, 0x00, 0x0F, 0x3F, 0x70, 0x60, 0x60, 0x60, 0x30, 0x3F, 0xCF, 0xF0, 0x38, 0x0E, 0x87, 0x81, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xFC, 0xFF, 0x03, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFC, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 - 0xC0, 0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xEF, 0xFF, 0xFC, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xFE, 0xFE, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0x00, 0x00, 0x80, 0xE0, 0x38, 0x0C, 0xE0, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, // 40 - 0x0C, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0xC0, 0x7C, 0x1F, 0x07, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 - 0x40, 0x60, 0xE0, 0xC0, 0xDC, 0xFC, 0xDC, 0xC0, 0xE0, 0xE0, 0x40, 0x00, 0x04, 0x06, 0x0F, 0x03, 0x00, 0x03, 0x07, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 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, 0x00, 0x00, 0x00, 0x00, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC1, 0xE3, 0x7F, 0x3F, 0x0F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x0E, 0x07, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 - 0x60, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 - 0x00, 0x30, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xB0, 0xBF, 0x1F, 0x07, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0xFE, 0x7C, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x30, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x80, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFE, 0xFF, 0xE7, 0x73, 0x71, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0xF8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 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, // 55 - 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x07, 0x8F, 0xDF, 0xFC, 0xF8, 0x70, 0x70, 0xE0, 0xF0, 0xF8, 0x9F, 0x8F, 0x07, 0x00, 0x7C, 0xFF, 0xFF, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0xFF, 0x7C, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 - 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x3F, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x83, 0xC3, 0xE3, 0xF3, 0xF9, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC1, 0xE3, 0x7F, 0x3F, 0x0F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x03, 0x07, 0x07, 0x0F, 0x0C, 0x1C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x1C, 0x0C, 0x0F, 0x07, 0x07, 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, 0x00, 0x00, // 62 - 0x18, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0x3C, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x8F, 0xCF, 0xCF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 - 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x08, 0x9C, 0x8C, 0xCC, 0xCC, 0xDC, 0xF8, 0xE0, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFE, 0xF0, 0x1F, 0x7F, 0xF0, 0x80, 0x00, 0x00, 0x1E, 0x3F, 0x7F, 0x71, 0x60, 0x60, 0x20, 0x3F, 0x7F, 0x70, 0x60, 0x60, 0x70, 0x38, 0x1F, 0x07, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x07, 0x00, 0x07, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x3F, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x3F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x04, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0xDC, 0xDF, 0x8F, 0x87, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC1, 0xFF, 0xFF, 0x7E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x10, 0x00, 0xF8, 0xFE, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0x7F, 0xF8, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xFC, 0x7F, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0x20, 0x00, 0xF8, 0xFE, 0xFF, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x07, 0x3F, 0x7F, 0xF8, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0x81, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 - 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 73 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x18, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE, 0x8F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x03, 0x07, 0x1F, 0x3E, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 - 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFF, 0x0F, 0x3F, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x3F, 0x0F, 0xFF, 0xFC, 0x80, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFF, 0xF8, 0xC0, 0xF8, 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x06, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 - 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0x7C, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xF8, 0x07, 0x3F, 0x7F, 0xFC, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 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, // 79 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xFF, 0x7F, 0x1F, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0x3F, 0x7F, 0xFC, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x3F, 0x3F, 0x79, 0x71, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x1F, 0x3E, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0x80, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x30, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC7, 0xFF, 0xFF, 0x7C, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 - 0x08, 0x78, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x78, 0x08, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFE, 0xF8, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, 0x00, 0x00, 0x00, // 86 - 0x18, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x18, 0x00, 0x00, 0x0F, 0x7F, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x3F, 0x07, 0x3F, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x80, 0xF0, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xF8, 0xFF, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFF, 0xF8, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, // 87 - 0x00, 0x08, 0x18, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xBE, 0xFC, 0xF0, 0xF8, 0xBC, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7C, 0x3E, 0x0F, 0x07, 0x01, 0x03, 0x0F, 0x1E, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x04, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0x08, 0x18, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x18, 0x08, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0x7C, 0xF0, 0xE0, 0xF0, 0x7C, 0x3E, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0xF8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 91 - 0xF8, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 - 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 93 - 0x00, 0x00, 0xC0, 0x60, 0x38, 0x0C, 0x38, 0x60, 0xC0, 0x00, 0x00, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 - 0x01, 0x03, 0x0F, 0x1E, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xE0, 0x00, 0xF0, 0xF8, 0xFC, 0x9E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x7C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x07, 0x07, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0x08, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x80, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x38, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x1F, 0x7F, 0xFF, 0xE3, 0xC3, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 - 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xFF, 0xE6, 0x00, 0x03, 0x8F, 0xCF, 0xFE, 0x7C, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x1E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x83, 0xE7, 0xC7, 0xC6, 0x86, 0x86, 0x82, 0x83, 0x83, 0xC3, 0xC7, 0xFE, 0xFE, 0x7C, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, // 103 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x38, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 - 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0xFF, 0x3F, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, // 106 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x0E, 0x07, 0x03, 0x07, 0x0F, 0x3E, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFE, 0xFC, 0xF8, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x38, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x7C, 0xF8, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x7C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0xFC, 0xFE, 0xFE, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, // 113 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x1E, 0x06, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0x9E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x0C, 0x00, 0x00, 0x81, 0x83, 0x03, 0x07, 0x07, 0x0E, 0x8E, 0xFC, 0xFC, 0xF0, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0x00, 0x00, 0xE0, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0E, 0x7E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x7E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFE, 0xF0, 0xC0, 0xF0, 0xFE, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3E, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xC0, 0xF0, 0x7E, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7E, 0xF0, 0xC0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x1E, 0x3C, 0x78, 0xE0, 0xC0, 0x80, 0xC0, 0xF0, 0x78, 0x3C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0x3D, 0x1F, 0x0F, 0x1F, 0x3D, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x7E, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF8, 0xC0, 0xE0, 0xF8, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xE1, 0xFF, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xEE, 0xFE, 0x7E, 0x1E, 0x0E, 0x06, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x3E, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x0B, 0xFB, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, 0xE1, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 123 - 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 124 - 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF1, 0xFB, 0x0B, 0x06, 0x04, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE1, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 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, // 126 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 - -}; - -#endif + + +/* + * + * TrebuchetMS34 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : TrebuchetMS34.h + * Date : 23.02.2019 + * Font size in bytes : 44642 + * Font width : 10 + * Font height : 34 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef TREBUCHETMS34_H +#define TREBUCHETMS34_H + +#define TREBUCHETMS34_WIDTH 10 +#define TREBUCHETMS34_HEIGHT 34 + +static const uint8_t TrebuchetMS34[] PROGMEM = { + 0xAE, 0x62, // size + 0x0A, // width + 0x22, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x00, 0x05, 0x08, 0x12, 0x0D, 0x12, 0x13, 0x03, 0x06, 0x06, + 0x0B, 0x0E, 0x06, 0x07, 0x05, 0x0C, 0x10, 0x08, 0x0F, 0x0E, + 0x11, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x05, 0x06, 0x0D, 0x0E, + 0x0D, 0x0B, 0x16, 0x13, 0x10, 0x12, 0x11, 0x0F, 0x0F, 0x13, + 0x12, 0x03, 0x0C, 0x11, 0x0D, 0x18, 0x12, 0x15, 0x0F, 0x16, + 0x11, 0x0D, 0x13, 0x12, 0x13, 0x1B, 0x13, 0x13, 0x0F, 0x07, + 0x0B, 0x07, 0x0B, 0x12, 0x06, 0x0F, 0x0F, 0x0E, 0x0F, 0x10, + 0x0C, 0x0F, 0x0E, 0x06, 0x09, 0x0F, 0x06, 0x17, 0x0E, 0x10, + 0x0F, 0x0F, 0x0B, 0x0B, 0x0B, 0x0E, 0x11, 0x19, 0x11, 0x11, + 0x0F, 0x0B, 0x03, 0x0B, 0x0C, 0x0D, + + // font data + 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xCF, 0xCF, 0xCF, 0x80, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 34 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x06, 0x06, 0x86, 0xF6, 0x7F, 0x07, 0x06, 0x06, 0x06, 0x86, 0xFE, 0x7F, 0x07, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0xCC, 0xFC, 0x3F, 0x0F, 0x0C, 0x0C, 0x0C, 0xCC, 0xFC, 0x3F, 0x0F, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 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, // 35 + 0x80, 0xE0, 0xF0, 0x78, 0x38, 0x3F, 0x3F, 0x38, 0x38, 0x38, 0x78, 0x30, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC7, 0xFF, 0xFF, 0x7C, 0x03, 0x03, 0x03, 0x07, 0x07, 0x7F, 0x7F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xC0, 0xF0, 0x30, 0x18, 0x18, 0x18, 0x38, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x70, 0x38, 0x08, 0x00, 0x0F, 0x3F, 0x70, 0x60, 0x60, 0x60, 0x30, 0x3F, 0xCF, 0xF0, 0x38, 0x0E, 0x87, 0x81, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xFC, 0xFF, 0x03, 0x01, 0x01, 0x01, 0x03, 0xFF, 0xFC, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 37 + 0xC0, 0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xEF, 0xFF, 0xFC, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xFE, 0xFE, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x00, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x00, 0x80, 0xE0, 0x38, 0x0C, 0xE0, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, // 40 + 0x0C, 0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0xC0, 0x7C, 0x1F, 0x07, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, // 41 + 0x40, 0x60, 0xE0, 0xC0, 0xDC, 0xFC, 0xDC, 0xC0, 0xE0, 0xE0, 0x40, 0x00, 0x04, 0x06, 0x0F, 0x03, 0x00, 0x03, 0x07, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 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, 0x00, 0x00, 0x00, 0x00, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC1, 0xE3, 0x7F, 0x3F, 0x0F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0xFC, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x0E, 0x07, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x60, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x00, 0x30, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xB0, 0xBF, 0x1F, 0x07, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0xFE, 0x7C, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x0E, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x30, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x80, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFE, 0xFF, 0xE7, 0x73, 0x71, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC1, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0xF8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 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, // 55 + 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x07, 0x8F, 0xDF, 0xFC, 0xF8, 0x70, 0x70, 0xE0, 0xF0, 0xF8, 0x9F, 0x8F, 0x07, 0x00, 0x7C, 0xFF, 0xFF, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xFF, 0xFF, 0x7C, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x3F, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x83, 0xC3, 0xE3, 0xF3, 0xF9, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0xC1, 0xE3, 0x7F, 0x3F, 0x0F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x03, 0x07, 0x07, 0x0F, 0x0C, 0x1C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x1C, 0x0C, 0x0F, 0x07, 0x07, 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, 0x00, 0x00, // 62 + 0x18, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0x3C, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x8F, 0xCF, 0xCF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x08, 0x9C, 0x8C, 0xCC, 0xCC, 0xDC, 0xF8, 0xE0, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFE, 0xF0, 0x1F, 0x7F, 0xF0, 0x80, 0x00, 0x00, 0x1E, 0x3F, 0x7F, 0x71, 0x60, 0x60, 0x20, 0x3F, 0x7F, 0x70, 0x60, 0x60, 0x70, 0x38, 0x1F, 0x07, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x3F, 0x07, 0x00, 0x07, 0x3F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x3F, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x3F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x04, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0xDC, 0xDF, 0x8F, 0x87, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC1, 0xFF, 0xFF, 0x7E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x10, 0x00, 0xF8, 0xFE, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0x7F, 0xF8, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xFC, 0x7F, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 68 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0x20, 0x00, 0xF8, 0xFE, 0xFF, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x07, 0x3F, 0x7F, 0xF8, 0xE0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0x81, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x18, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xC0, 0xE0, 0xF0, 0xFC, 0xFE, 0x8F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x03, 0x07, 0x1F, 0x3E, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFF, 0x0F, 0x3F, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x3F, 0x0F, 0xFF, 0xFC, 0x80, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFF, 0xF8, 0xC0, 0xF8, 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x06, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0x7C, 0xF8, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xF8, 0x07, 0x3F, 0x7F, 0xFC, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 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, // 79 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xFF, 0x7F, 0x1F, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0x3F, 0x7F, 0xFC, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0F, 0x3F, 0x3F, 0x79, 0x71, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 81 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x1F, 0x3E, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x80, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x30, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC7, 0xFF, 0xFF, 0x7C, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x08, 0x78, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x78, 0x08, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFE, 0xF8, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, 0x00, 0x00, 0x00, // 86 + 0x18, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x18, 0x00, 0x00, 0x0F, 0x7F, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x3F, 0x07, 0x3F, 0xFF, 0xFC, 0xE0, 0x00, 0x00, 0x80, 0xF0, 0xFF, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xF8, 0xFF, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFF, 0xF8, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, // 87 + 0x00, 0x08, 0x18, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xBE, 0xFC, 0xF0, 0xF8, 0xBC, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x7C, 0x3E, 0x0F, 0x07, 0x01, 0x03, 0x0F, 0x1E, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x04, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x08, 0x18, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x18, 0x08, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3E, 0x7C, 0xF0, 0xE0, 0xF0, 0x7C, 0x3E, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0xF8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x7F, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 91 + 0xF8, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 92 + 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 93 + 0x00, 0x00, 0xC0, 0x60, 0x38, 0x0C, 0x38, 0x60, 0xC0, 0x00, 0x00, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 95 + 0x01, 0x03, 0x0F, 0x1E, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xE0, 0x00, 0xF0, 0xF8, 0xFC, 0x9E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x7C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x07, 0x07, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0x08, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFC, 0x80, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x38, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x1F, 0x7F, 0xFF, 0xE3, 0xC3, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF8, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xFC, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xFF, 0xE6, 0x00, 0x03, 0x8F, 0xCF, 0xFE, 0x7C, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x1E, 0x1F, 0x0F, 0x03, 0x00, 0x00, 0x83, 0xE7, 0xC7, 0xC6, 0x86, 0x86, 0x82, 0x83, 0x83, 0xC3, 0xC7, 0xFE, 0xFE, 0x7C, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, // 103 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x38, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE0, 0xFF, 0xFF, 0x3F, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, // 106 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x0E, 0x07, 0x03, 0x07, 0x0F, 0x3E, 0x7C, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0xFE, 0xFC, 0xF8, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFC, 0x38, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3E, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x7C, 0x1C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x7C, 0xF8, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x7C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0xFC, 0xFE, 0xFE, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x78, 0x1C, 0x0C, 0x0E, 0x0E, 0x0E, 0x1E, 0x06, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFC, 0x9E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x0C, 0x00, 0x00, 0x81, 0x83, 0x03, 0x07, 0x07, 0x0E, 0x8E, 0xFC, 0xFC, 0xF0, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0x00, 0x00, 0xE0, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0E, 0x7E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x7E, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFE, 0xF0, 0xC0, 0xF0, 0xFE, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3E, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x3E, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFC, 0xC0, 0xF0, 0x7E, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7E, 0xF0, 0xC0, 0xFC, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x1E, 0x3C, 0x78, 0xE0, 0xC0, 0x80, 0xC0, 0xF0, 0x78, 0x3C, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0x3D, 0x1F, 0x0F, 0x1F, 0x3D, 0xF8, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x7E, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF8, 0xC0, 0xE0, 0xF8, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xE1, 0xFF, 0x7F, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xEE, 0xFE, 0x7E, 0x1E, 0x0E, 0x06, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x3E, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x0B, 0xFB, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, 0xE1, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 123 + 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, // 124 + 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF1, 0xFB, 0x0B, 0x06, 0x04, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xE1, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 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, // 126 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/lib/BrbDisplayBase/fonts/Ubuntu36.h b/lib/BrbDisplayBase/fonts/Ubuntu36.h index 0cc0b70..6cb78da 100644 --- a/lib/BrbDisplayBase/fonts/Ubuntu36.h +++ b/lib/BrbDisplayBase/fonts/Ubuntu36.h @@ -1,166 +1,166 @@ - - -/* - * - * Ubuntu36 - * - * created with FontCreator - * written by F. Maximilian Thiele - * - * http://www.apetech.de/fontCreator - * me@apetech.de - * - * File Name : Ubuntu36.h - * Date : 02.02.2019 - * Font size in bytes : 50817 - * Font width : 10 - * Font height : 35 - * Font first char : 32 - * Font last char : 128 - * Font used chars : 96 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef UBUNTU36_H -#define UBUNTU36_H - -#define UBUNTU36_WIDTH 10 -#define UBUNTU36_HEIGHT 35 - -static const uint8_t Ubuntu36[] PROGMEM = { - 0xC6, 0x81, // size - 0x0A, // width - 0x23, // height - 0x20, // first char - 0x60, // char count - - // char widths - 0x00, 0x05, 0x09, 0x14, 0x10, 0x1B, 0x15, 0x03, 0x08, 0x08, - 0x0F, 0x11, 0x04, 0x09, 0x05, 0x0E, 0x10, 0x0A, 0x10, 0x0F, - 0x11, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x05, 0x05, 0x10, 0x10, - 0x11, 0x0D, 0x1E, 0x18, 0x12, 0x13, 0x15, 0x11, 0x0F, 0x13, - 0x13, 0x03, 0x0F, 0x14, 0x0F, 0x1B, 0x14, 0x18, 0x12, 0x18, - 0x13, 0x11, 0x13, 0x13, 0x17, 0x20, 0x15, 0x15, 0x13, 0x09, - 0x0E, 0x09, 0x11, 0x12, 0x06, 0x0E, 0x10, 0x0E, 0x10, 0x10, - 0x0B, 0x10, 0x0F, 0x03, 0x06, 0x0F, 0x06, 0x19, 0x0F, 0x11, - 0x10, 0x10, 0x0B, 0x0D, 0x0A, 0x0F, 0x11, 0x1B, 0x10, 0x11, - 0x0F, 0x0A, 0x03, 0x0A, 0x11, 0x0E, - - // font data - 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0x8F, 0x83, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 34 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x18, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x9C, 0xFC, 0xFF, 0x7F, 0x1F, 0x1C, 0x1C, 0x1C, 0x9C, 0xFC, 0xFF, 0x7F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFF, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFF, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 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, // 35 - 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0xE0, 0x60, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0xF1, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x8F, 0xFE, 0xFC, 0xF0, 0x06, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 - 0xC0, 0xE0, 0xF0, 0x78, 0x18, 0x18, 0x18, 0x18, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x60, 0x60, 0x60, 0x60, 0x78, 0x3F, 0x1F, 0x0F, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0xF8, 0xFC, 0xFE, 0x0F, 0x03, 0x03, 0x03, 0x03, 0x0F, 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, 0x03, 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, // 37 - 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xBF, 0xFF, 0xF8, 0xE0, 0xE0, 0xF0, 0x70, 0x3C, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x87, 0x03, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0xF0, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 - 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 - 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x02, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7F, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xE0, 0x40, // 40 - 0x02, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x80, 0xE0, 0xF8, 0x7F, 0x1F, 0x07, 0x00, 0x40, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, // 41 - 0x80, 0xC0, 0x80, 0x80, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x80, 0x00, 0x01, 0xC1, 0xE3, 0xF3, 0x7B, 0x1E, 0x07, 0x1E, 0x7B, 0xF3, 0xE3, 0xC1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 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, // 43 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x20, 0x60, 0x00, 0x00, // 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 - 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0xFC, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 - 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0x01, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 - 0x40, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 - 0x20, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF8, 0x9F, 0x8F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x87, 0xFF, 0xFF, 0x7C, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3C, 0x3F, 0x3F, 0x3B, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 - 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x70, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFF, 0x7E, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 - 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFF, 0x63, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 - 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0xF8, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0xF8, 0xFC, 0xFE, 0x87, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x8F, 0xFF, 0xFE, 0xF8, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 - 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0x80, 0x00, 0x3F, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xF1, 0xFD, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, // 59 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0C, 0x07, 0x07, 0x0F, 0x0F, 0x1D, 0x1D, 0x38, 0x38, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1D, 0x1D, 0x0F, 0x0F, 0x07, 0x07, 0x01, 0x03, 0x01, 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, // 62 - 0x30, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x38, 0x3F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x01, 0x80, 0xE0, 0xF0, 0xF8, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x1F, 0xFE, 0xFC, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0xFF, 0xF0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0x7F, 0x0F, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0x70, 0xF0, 0xE0, 0xE1, 0xE1, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0xC1, 0xE3, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x78, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x01, 0x0F, 0x3F, 0xFE, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x3F, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3B, 0x3F, 0x7F, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 - 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xBF, 0x9F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC3, 0xFF, 0xFF, 0x7C, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x30, 0xF0, 0xFE, 0xFF, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 - 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFF, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 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, // 68 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 - 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x30, 0xF8, 0xFE, 0xFF, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 - 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 73 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x7F, 0x02, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x18, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xB8, 0xBC, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 - 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x1F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x1F, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFE, 0xF0, 0xC0, 0xF0, 0xFE, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 - 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0x7C, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x3C, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFF, 0xFE, 0xF8, 0x07, 0x3F, 0xFF, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0xFF, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 79 - 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE1, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 - 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x3E, 0x7E, 0xFE, 0xEE, 0xC7, 0x87, 0x87, 0x83, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x20, 0x00, 0x00, // 81 - 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x3F, 0x7D, 0xF9, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 - 0x00, 0x80, 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0x30, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0x78, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x8F, 0xFE, 0xFE, 0xF8, 0x02, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 - 0x08, 0x78, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x78, 0x08, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 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, // 86 - 0x38, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x38, 0x00, 0x03, 0x7F, 0xFF, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x3F, 0xFF, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFE, 0xE0, 0x00, 0xE0, 0xF8, 0xFF, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 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, // 87 - 0x08, 0x18, 0x78, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0x78, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0x7C, 0x3E, 0x0F, 0x07, 0x03, 0x07, 0x1F, 0x3E, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 - 0x08, 0x38, 0x78, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x38, 0x08, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xE0, 0x80, 0xE0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 - 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0xF8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x3E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 - 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 91 - 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xE0, // 92 - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 93 - 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x38, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 94 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 95 - 0x06, 0x0F, 0x1E, 0x3C, 0x78, 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, // 96 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xE0, 0xF8, 0xFC, 0xFE, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x7C, 0xF8, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x0C, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xE7, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 - 0xF0, 0xFC, 0xFE, 0x1E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFC, 0xFC, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0x83, 0xE3, 0xFF, 0xFF, 0x3F, 0x00, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x20, 0x00, 0x00, // 103 - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 - 0x1E, 0x1E, 0x1E, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 105 - 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, // 106 - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x1F, 0x3D, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xDC, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0x78, 0xF8, 0xE0, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFC, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, // 113 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x9C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x0C, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xFC, 0xF8, 0xF0, 0x06, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3E, 0xFE, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x80, 0xE0, 0xF8, 0xFF, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7E, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFE, 0x7E, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x7E, 0x06, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0xFF, 0x3F, 0x03, 0x00, 0x07, 0x3F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x1E, 0x3E, 0xF8, 0xF0, 0xC0, 0x80, 0xC0, 0xF0, 0xF8, 0x7E, 0x1E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFB, 0x7F, 0x1F, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0xFE, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFF, 0xF8, 0xC0, 0x00, 0xF0, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xEF, 0xFF, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x8E, 0xCE, 0xEE, 0xFE, 0x7E, 0x3E, 0x1E, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 - 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0x0F, 0x07, 0x07, 0x07, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x0F, 0xFF, 0xFD, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, // 123 - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, // 124 - 0x07, 0x07, 0x07, 0x0F, 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFD, 0xFF, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, // 125 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x04, 0x0F, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x03, 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, // 126 - 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 - -}; - -#endif + + +/* + * + * Ubuntu36 + * + * created with FontCreator + * written by F. Maximilian Thiele + * + * http://www.apetech.de/fontCreator + * me@apetech.de + * + * File Name : Ubuntu36.h + * Date : 02.02.2019 + * Font size in bytes : 50817 + * Font width : 10 + * Font height : 35 + * Font first char : 32 + * Font last char : 128 + * Font used chars : 96 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef UBUNTU36_H +#define UBUNTU36_H + +#define UBUNTU36_WIDTH 10 +#define UBUNTU36_HEIGHT 35 + +static const uint8_t Ubuntu36[] PROGMEM = { + 0xC6, 0x81, // size + 0x0A, // width + 0x23, // height + 0x20, // first char + 0x60, // char count + + // char widths + 0x00, 0x05, 0x09, 0x14, 0x10, 0x1B, 0x15, 0x03, 0x08, 0x08, + 0x0F, 0x11, 0x04, 0x09, 0x05, 0x0E, 0x10, 0x0A, 0x10, 0x0F, + 0x11, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x05, 0x05, 0x10, 0x10, + 0x11, 0x0D, 0x1E, 0x18, 0x12, 0x13, 0x15, 0x11, 0x0F, 0x13, + 0x13, 0x03, 0x0F, 0x14, 0x0F, 0x1B, 0x14, 0x18, 0x12, 0x18, + 0x13, 0x11, 0x13, 0x13, 0x17, 0x20, 0x15, 0x15, 0x13, 0x09, + 0x0E, 0x09, 0x11, 0x12, 0x06, 0x0E, 0x10, 0x0E, 0x10, 0x10, + 0x0B, 0x10, 0x0F, 0x03, 0x06, 0x0F, 0x06, 0x19, 0x0F, 0x11, + 0x10, 0x10, 0x0B, 0x0D, 0x0A, 0x0F, 0x11, 0x1B, 0x10, 0x11, + 0x0F, 0x0A, 0x03, 0x0A, 0x11, 0x0E, + + // font data + 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x83, 0x8F, 0x83, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 33 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 34 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x18, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x9C, 0xFC, 0xFF, 0x7F, 0x1F, 0x1C, 0x1C, 0x1C, 0x9C, 0xFC, 0xFF, 0x7F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFF, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFF, 0xFF, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 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, // 35 + 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0xE0, 0x60, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0xF1, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x8F, 0xFE, 0xFC, 0xF0, 0x06, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFE, 0xFE, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 36 + 0xC0, 0xE0, 0xF0, 0x78, 0x18, 0x18, 0x18, 0x18, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0x78, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x78, 0x60, 0x60, 0x60, 0x60, 0x78, 0x3F, 0x1F, 0x0F, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3F, 0x0F, 0x03, 0x00, 0xF8, 0xFC, 0xFE, 0x0F, 0x03, 0x03, 0x03, 0x03, 0x0F, 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x07, 0x03, 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, // 37 + 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xBF, 0xFF, 0xF8, 0xE0, 0xE0, 0xF0, 0x70, 0x3C, 0x1F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x87, 0x03, 0x01, 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0xF0, 0xF8, 0x3E, 0x0F, 0x03, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x03, 0x03, 0x07, 0x0F, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 38 + 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 39 + 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0x3E, 0x0F, 0x02, 0xF0, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x7F, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xE0, 0x40, // 40 + 0x02, 0x0F, 0x3E, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x80, 0xE0, 0xF8, 0x7F, 0x1F, 0x07, 0x00, 0x40, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, // 41 + 0x80, 0xC0, 0x80, 0x80, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x80, 0x80, 0xC0, 0x80, 0x00, 0x01, 0xC1, 0xE3, 0xF3, 0x7B, 0x1E, 0x07, 0x1E, 0x7B, 0xF3, 0xE3, 0xC1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 42 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 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, // 43 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x20, 0x60, 0x00, 0x00, // 44 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 45 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 46 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 47 + 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0xFC, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 48 + 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0x01, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 49 + 0x40, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 50 + 0x20, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF8, 0x9F, 0x8F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x87, 0xFF, 0xFF, 0x7C, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 51 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0x07, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x3C, 0x3F, 0x3F, 0x3B, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 52 + 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x70, 0x7F, 0x7F, 0x7F, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xFF, 0xFF, 0x7E, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 53 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFF, 0x63, 0x71, 0x70, 0x70, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 54 + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 55 + 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0x78, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0xF8, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xE0, 0xF0, 0x7F, 0x3F, 0x0F, 0x00, 0xF8, 0xFC, 0xFE, 0x87, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x8F, 0xFF, 0xFE, 0xF8, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 56 + 0x00, 0xC0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0x80, 0x00, 0x3F, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC1, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x83, 0xC3, 0xF1, 0xFD, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 57 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x80, 0x80, 0x80, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 58 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x1F, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, // 59 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0C, 0x07, 0x07, 0x0F, 0x0F, 0x1D, 0x1D, 0x38, 0x38, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 60 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 61 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1D, 0x1D, 0x0F, 0x0F, 0x07, 0x07, 0x01, 0x03, 0x01, 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, // 62 + 0x30, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x38, 0x3F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x8F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 63 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x01, 0x80, 0xE0, 0xF0, 0xF8, 0x38, 0x3C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0xF8, 0x00, 0x01, 0x03, 0x07, 0x1F, 0xFE, 0xFC, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x1F, 0x7F, 0xFF, 0xF0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0xC0, 0xF0, 0xFF, 0x7F, 0x0F, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3C, 0x78, 0x70, 0xF0, 0xE0, 0xE1, 0xE1, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC1, 0xC1, 0xE3, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 64 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x78, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0x00, 0x01, 0x0F, 0x3F, 0xFE, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x3F, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3B, 0x3F, 0x7F, 0xFC, 0xF0, 0xC0, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 65 + 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF8, 0xBF, 0x9F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xC3, 0xFF, 0xFF, 0x7C, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 66 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x30, 0xF0, 0xFE, 0xFF, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 67 + 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFF, 0xFE, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 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, // 68 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 69 + 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 70 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x30, 0xF8, 0xFE, 0xFF, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 71 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 72 + 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 73 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x7F, 0x02, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 74 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x38, 0x18, 0x08, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xB8, 0xBC, 0x1E, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x03, 0x07, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 75 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 76 + 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x1F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0x7F, 0x1F, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0xFE, 0xF0, 0xC0, 0xF0, 0xFE, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 77 + 0xF8, 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x0F, 0x3E, 0x7C, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x1F, 0x3C, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 78 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFF, 0xFE, 0xF8, 0x07, 0x3F, 0xFF, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0xFF, 0x3F, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x03, 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, // 79 + 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xE1, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 80 + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0xF0, 0xFE, 0xFF, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0xFF, 0xFE, 0xF8, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF8, 0x7F, 0x3F, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x3E, 0x7E, 0xFE, 0xEE, 0xC7, 0x87, 0x87, 0x83, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x20, 0x00, 0x00, // 81 + 0xF0, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xFF, 0x7F, 0x1F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x0F, 0x3F, 0x7D, 0xF9, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 82 + 0x00, 0x80, 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0x30, 0x00, 0x00, 0x0F, 0x3F, 0x7F, 0x78, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x8F, 0xFE, 0xFE, 0xF8, 0x02, 0x07, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 83 + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 84 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 85 + 0x08, 0x78, 0xF8, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0x78, 0x08, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFE, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF8, 0xC0, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 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, // 86 + 0x38, 0xF8, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0xF8, 0x38, 0x00, 0x03, 0x7F, 0xFF, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x3F, 0x07, 0x3F, 0xFF, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0xFF, 0xFE, 0xE0, 0x00, 0xE0, 0xF8, 0xFF, 0x3F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 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, // 87 + 0x08, 0x18, 0x78, 0xF8, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0x78, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xF0, 0xF8, 0x3E, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF8, 0x7C, 0x3E, 0x0F, 0x07, 0x03, 0x07, 0x1F, 0x3E, 0x78, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 88 + 0x08, 0x38, 0x78, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x38, 0x08, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x3E, 0xFC, 0xF0, 0xE0, 0x80, 0xE0, 0xF0, 0xFC, 0x3E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 89 + 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0xB8, 0xF8, 0xF8, 0xF8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x7C, 0x3E, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 90 + 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 91 + 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFE, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x7F, 0xFC, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xE0, 0xE0, // 92 + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 93 + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xF8, 0x38, 0xF8, 0xF0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xFE, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x3F, 0xFE, 0xF8, 0xE0, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, // 94 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, // 95 + 0x06, 0x0F, 0x1E, 0x3C, 0x78, 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, // 96 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xE0, 0xF8, 0xFC, 0xFE, 0x0E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 97 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0x7C, 0xF8, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFF, 0xFF, 0x3F, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x0C, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0xF8, 0x7C, 0x3C, 0x1E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 100 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xC0, 0x3F, 0xFF, 0xFF, 0xE7, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 101 + 0xF0, 0xFC, 0xFE, 0x1E, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 102 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFC, 0xFC, 0x3F, 0xFF, 0xFF, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x81, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x87, 0x83, 0xE3, 0xFF, 0xFF, 0x3F, 0x00, 0x60, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x20, 0x00, 0x00, // 103 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xF8, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 104 + 0x1E, 0x1E, 0x1E, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, // 105 + 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, // 106 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0E, 0x06, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0x1F, 0x3D, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 107 + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 108 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xDC, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF8, 0xE0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 109 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x3C, 0xFC, 0xF0, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 110 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0x78, 0xF8, 0xE0, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 111 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xF8, 0xF0, 0xE0, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x03, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 112 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0x3C, 0x1C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFE, 0xFC, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, // 113 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0xFE, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 114 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF8, 0xFC, 0x9C, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x0C, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x0E, 0x0E, 0x0E, 0x1C, 0x3C, 0xFC, 0xF8, 0xF0, 0x06, 0x07, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 115 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 116 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 117 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3E, 0xFE, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFC, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF, 0xF8, 0xE0, 0x80, 0xE0, 0xF8, 0xFF, 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 118 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x7E, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xFE, 0x7E, 0xFE, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x7E, 0x06, 0x00, 0x00, 0x03, 0x1F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0xFF, 0x3F, 0x03, 0x00, 0x07, 0x3F, 0xFF, 0xFC, 0xE0, 0x00, 0xE0, 0xFC, 0xFF, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 119 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x1E, 0x3E, 0xF8, 0xF0, 0xC0, 0x80, 0xC0, 0xF0, 0xF8, 0x7E, 0x1E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xF0, 0xFB, 0x7F, 0x1F, 0x3F, 0x7F, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x0F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 120 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0xFE, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFC, 0xFE, 0x3E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFF, 0xF8, 0xC0, 0x00, 0xF0, 0xFE, 0x7F, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xEF, 0xFF, 0xFF, 0x3F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 121 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x8E, 0xCE, 0xEE, 0xFE, 0x7E, 0x3E, 0x1E, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 122 + 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0x0F, 0x07, 0x07, 0x07, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x0F, 0xFF, 0xFD, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, // 123 + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, // 124 + 0x07, 0x07, 0x07, 0x0F, 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFD, 0xFF, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, // 125 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x04, 0x0F, 0x0F, 0x03, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0E, 0x0E, 0x0E, 0x0F, 0x07, 0x03, 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, // 126 + 0xFE, 0xFE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xFE, 0xFE, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x0F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 127 + +}; + +#endif diff --git a/lib/BrbMCUServoBase/src/BrbMCUServoBase.cpp b/lib/BrbMCUServoBase/src/BrbMCUServoBase.cpp index 1ae8f68..c94c322 100644 --- a/lib/BrbMCUServoBase/src/BrbMCUServoBase.cpp +++ b/lib/BrbMCUServoBase/src/BrbMCUServoBase.cpp @@ -1,168 +1,168 @@ -/* - * BrbMCUServoBase.cpp - * - * Created on: 2019-01-04 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2019 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbMCUServoBase.h" - -/**********************************************************************************************************************/ -int BrbMCUServoBase_Init(BrbMCUServoBase *servo_base) -{ - - return 0; -} -/**********************************************************************************************************************/ -BrbMCUServo *BrbMCUServoGrabByID(BrbMCUServoBase *servo_base, int servo_id) -{ - BrbMCUServo *servo; - - /* Sanity check */ - if (servo_id > MAX_SERVO) - return NULL; - - servo = &servo_base->arr[servo_id]; - - if (!servo->servo) - servo->servo = new Servo(); - - return servo; -} -/**********************************************************************************************************************/ -BrbMCUServo *BrbMCUServoGrabFree(BrbMCUServoBase *servo_base) -{ - BrbMCUServo *servo; - int i; - - servo = NULL; - - /* Select a free timer slot from array */ - for (i = 0; i < MAX_SERVO; i++) - { - if (servo_base->arr[i].flags.active) - continue; - - /* Fill up servo data */ - servo = (BrbMCUServo *)&servo_base->arr[i]; - servo->servo_id = i; - break; - } - - /* No more timers */ - if (!servo) - return NULL; - - if (!servo->servo) - servo->servo = new Servo(); - - return servo; -} -/**********************************************************************************************************************/ -BrbMCUServo *BrbMCUServoGrabByPin(BrbMCUServoBase *servo_base, int pin) -{ - BrbMCUServo *servo = NULL; - int i; - - /* Select a free timer slot from array */ - for (i = 0; i < MAX_SERVO; i++) - { - /* Fill up servo data */ - servo = (BrbMCUServo *)&servo_base->arr[i]; - - if (pin == servo->pin) - return servo; - - continue; - } - - return NULL; -} -/**********************************************************************************************************************/ -int BrbMCUServoAttach(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pin) -{ - if (servo->flags.attached) - return -1; - - servo->servo->attach(pin); - servo->pin = pin; - servo->flags.attached = 1; - - servo->pos_cur = servo->servo->read(); - - return servo->servo_id; -} -/**********************************************************************************************************************/ -BrbMCUServo *BrbMCUServoSetPosByPin(BrbMCUServoBase *servo_base, int pin, int pos_set) -{ - BrbMCUServo *servo; - - servo = BrbMCUServoGrabByPin(servo_base, pin); - - if (!servo) - { - servo = BrbMCUServoGrabFree(servo_base); - - if (!servo) - return NULL; - } - - BrbMCUServoAttach(servo_base, servo, pin); - - // servo->pos_cur = servo->servo->read(); - - if (pos_set > servo->pos_cur) - while (pos_set > servo->pos_cur) - servo->servo->write(++servo->pos_cur); - else if (pos_set < servo->pos_cur) - while (pos_set < servo->pos_cur) - servo->servo->write(--servo->pos_cur); - - return servo; -} -/**********************************************************************************************************************/ -BrbMCUServo *BrbMCUServoSetPos(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pos_set) -{ - if (!servo->flags.attached) - BrbMCUServoAttach(servo_base, servo, servo->pin); - - servo->pos_cur = servo->servo->read(); - - if (pos_set > servo->pos_cur) - while (pos_set > servo->pos_cur) - servo->servo->write(++servo->pos_cur); - else if (pos_set < servo->pos_cur) - while (pos_set < servo->pos_cur) - servo->servo->write(--servo->pos_cur); - - servo->pos_cur = servo->servo->read(); - - return servo; -} +/* + * BrbMCUServoBase.cpp + * + * Created on: 2019-01-04 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2019 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbMCUServoBase.h" + +/**********************************************************************************************************************/ +int BrbMCUServoBase_Init(BrbMCUServoBase *servo_base) +{ + + return 0; +} +/**********************************************************************************************************************/ +BrbMCUServo *BrbMCUServoGrabByID(BrbMCUServoBase *servo_base, int servo_id) +{ + BrbMCUServo *servo; + + /* Sanity check */ + if (servo_id > MAX_SERVO) + return NULL; + + servo = &servo_base->arr[servo_id]; + + if (!servo->servo) + servo->servo = new Servo(); + + return servo; +} +/**********************************************************************************************************************/ +BrbMCUServo *BrbMCUServoGrabFree(BrbMCUServoBase *servo_base) +{ + BrbMCUServo *servo; + int i; + + servo = NULL; + + /* Select a free timer slot from array */ + for (i = 0; i < MAX_SERVO; i++) + { + if (servo_base->arr[i].flags.active) + continue; + + /* Fill up servo data */ + servo = (BrbMCUServo *)&servo_base->arr[i]; + servo->servo_id = i; + break; + } + + /* No more timers */ + if (!servo) + return NULL; + + if (!servo->servo) + servo->servo = new Servo(); + + return servo; +} +/**********************************************************************************************************************/ +BrbMCUServo *BrbMCUServoGrabByPin(BrbMCUServoBase *servo_base, int pin) +{ + BrbMCUServo *servo = NULL; + int i; + + /* Select a free timer slot from array */ + for (i = 0; i < MAX_SERVO; i++) + { + /* Fill up servo data */ + servo = (BrbMCUServo *)&servo_base->arr[i]; + + if (pin == servo->pin) + return servo; + + continue; + } + + return NULL; +} +/**********************************************************************************************************************/ +int BrbMCUServoAttach(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pin) +{ + if (servo->flags.attached) + return -1; + + servo->servo->attach(pin); + servo->pin = pin; + servo->flags.attached = 1; + + servo->pos_cur = servo->servo->read(); + + return servo->servo_id; +} +/**********************************************************************************************************************/ +BrbMCUServo *BrbMCUServoSetPosByPin(BrbMCUServoBase *servo_base, int pin, int pos_set) +{ + BrbMCUServo *servo; + + servo = BrbMCUServoGrabByPin(servo_base, pin); + + if (!servo) + { + servo = BrbMCUServoGrabFree(servo_base); + + if (!servo) + return NULL; + } + + BrbMCUServoAttach(servo_base, servo, pin); + + // servo->pos_cur = servo->servo->read(); + + if (pos_set > servo->pos_cur) + while (pos_set > servo->pos_cur) + servo->servo->write(++servo->pos_cur); + else if (pos_set < servo->pos_cur) + while (pos_set < servo->pos_cur) + servo->servo->write(--servo->pos_cur); + + return servo; +} +/**********************************************************************************************************************/ +BrbMCUServo *BrbMCUServoSetPos(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pos_set) +{ + if (!servo->flags.attached) + BrbMCUServoAttach(servo_base, servo, servo->pin); + + servo->pos_cur = servo->servo->read(); + + if (pos_set > servo->pos_cur) + while (pos_set > servo->pos_cur) + servo->servo->write(++servo->pos_cur); + else if (pos_set < servo->pos_cur) + while (pos_set < servo->pos_cur) + servo->servo->write(--servo->pos_cur); + + servo->pos_cur = servo->servo->read(); + + return servo; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbMCUServoBase/src/BrbMCUServoBase.h b/lib/BrbMCUServoBase/src/BrbMCUServoBase.h index a2b6ec4..363d479 100644 --- a/lib/BrbMCUServoBase/src/BrbMCUServoBase.h +++ b/lib/BrbMCUServoBase/src/BrbMCUServoBase.h @@ -1,98 +1,98 @@ -/* - * BrbMCUServoBase.h - * - * Created on: 2018-10-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_MCU_SERVO_BASE_H_ -#define BRB_MCU_SERVO_BASE_H_ - -/**********************************************************************************************************************/ -#include "Arduino.h" -#include "Servo.h" -// #include "BrbBase.h" -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) -//Code in here will only be compiled if an Arduino Mega is used. -#endif -#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) -//Code in here will only be compiled if an Arduino Uno (or older) is used. -#endif -#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__) -//Code in here will only be compiled if an Arduino Leonardo is used. -#endif - -#define MAX_SERVO 4 -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ - -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef struct _BrbMCUServo -{ - uint8_t pin; - uint8_t servo_id; - uint8_t pos_cur; - - Servo *servo; - - struct - { - uint16_t active:1; - uint16_t attached:1; - } flags; - -} BrbMCUServo; -/**********************************************************/ -typedef struct _BrbMCUServoBase -{ - int count; - BrbMCUServo arr[MAX_SERVO]; - -} BrbMCUServoBase; -/**********************************************************************************************************************/ -/* PUBLIC FUNCTIONS */ -/**********************************************************/ -/* BrbMCUServo */ -/**********************************************************/ -int BrbMCUServoBase_Init(BrbMCUServoBase *servo_base); -BrbMCUServo *BrbMCUServoGrabByID(BrbMCUServoBase *servo_base, int servo_id); -BrbMCUServo *BrbMCUServoGrabFree(BrbMCUServoBase *servo_base); -BrbMCUServo *BrbMCUServoGrabByPin(BrbMCUServoBase *servo_base, int pin); -int BrbMCUServoAttach(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pin); -BrbMCUServo *BrbMCUServoSetPosByPin(BrbMCUServoBase *servo_base, int pin, int pos_set); -BrbMCUServo *BrbMCUServoSetPos(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pos_set); -/**********************************************************************************************************************/ - +/* + * BrbMCUServoBase.h + * + * Created on: 2018-10-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_MCU_SERVO_BASE_H_ +#define BRB_MCU_SERVO_BASE_H_ + +/**********************************************************************************************************************/ +#include "Arduino.h" +#include "Servo.h" +// #include "BrbBase.h" +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +//Code in here will only be compiled if an Arduino Mega is used. +#endif +#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) +//Code in here will only be compiled if an Arduino Uno (or older) is used. +#endif +#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega16U4__) +//Code in here will only be compiled if an Arduino Leonardo is used. +#endif + +#define MAX_SERVO 4 +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ + +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef struct _BrbMCUServo +{ + uint8_t pin; + uint8_t servo_id; + uint8_t pos_cur; + + Servo *servo; + + struct + { + uint16_t active:1; + uint16_t attached:1; + } flags; + +} BrbMCUServo; +/**********************************************************/ +typedef struct _BrbMCUServoBase +{ + int count; + BrbMCUServo arr[MAX_SERVO]; + +} BrbMCUServoBase; +/**********************************************************************************************************************/ +/* PUBLIC FUNCTIONS */ +/**********************************************************/ +/* BrbMCUServo */ +/**********************************************************/ +int BrbMCUServoBase_Init(BrbMCUServoBase *servo_base); +BrbMCUServo *BrbMCUServoGrabByID(BrbMCUServoBase *servo_base, int servo_id); +BrbMCUServo *BrbMCUServoGrabFree(BrbMCUServoBase *servo_base); +BrbMCUServo *BrbMCUServoGrabByPin(BrbMCUServoBase *servo_base, int pin); +int BrbMCUServoAttach(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pin); +BrbMCUServo *BrbMCUServoSetPosByPin(BrbMCUServoBase *servo_base, int pin, int pos_set); +BrbMCUServo *BrbMCUServoSetPos(BrbMCUServoBase *servo_base, BrbMCUServo *servo, int pos_set); +/**********************************************************************************************************************/ + #endif /* BRB_BASE_H_ */ \ No newline at end of file diff --git a/lib/BrbToneBase/BrbToneBase.cpp b/lib/BrbToneBase/BrbToneBase.cpp index 9e1ad02..8d0bcf2 100644 --- a/lib/BrbToneBase/BrbToneBase.cpp +++ b/lib/BrbToneBase/BrbToneBase.cpp @@ -1,344 +1,344 @@ -/* - * BrbToneBase.cpp - * - * Created on: 2018-02-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2019 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "BrbToneBase.h" - -int BrbToneBase_PlayStarWars(BrbToneBase *tone_base); - -/**********************************************************************************************************************/ -int BrbToneBase_Init(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - /* Current note has expired */ - if (tone_base->duration > 0 || tone_base->pin < 2 || tone_base->pin > NUM_DIGITAL_PINS) - return -1; - - /* Enable pin */ - pinMode(tone_base->pin, OUTPUT); - - BrbToneBase_PlayStart(tone_base); - - /* Do the first loop, if it has items */ - // BrbToneBase_Loop(tone_base); - - return 0; -} -/**********************************************************************************************************************/ -void BrbToneBase_Loop(BrbToneBase *tone_base) -{ - /* Tone is disabled */ - if (!tone_base->flags.enabled || tone_base->pin < 2 || tone_base->pin > NUM_DIGITAL_PINS) - return; - - if (tone_base->index >= 0) - { - tone_base->ms_delta = (millis() - tone_base->ms_last); - tone_base->ms_last = millis(); - - /* Update last duration */ - tone_base->duration = (tone_base->duration - tone_base->ms_delta); - // tone_base->duration = (tone_base->duration - tone_base->brb_base->ms.delay); - - /* Current note has expired */ - if (tone_base->duration > 0) - return; - - noTone(tone_base->pin); - } - - /* Find the next index for note to be played */ - if (tone_base->index >= tone_base->size) - { - tone_base->index = 0; - - /* We have finished, increase loop count */ - tone_base->loop_cnt++; - - if ((tone_base->loop_max > 0 && tone_base->loop_cnt >= tone_base->loop_max) || tone_base->note == NOTE_FINISH) - { - tone_base->flags.enabled = 0; - tone_base->loop_cnt = 0; - - return; - } - } - else - { - tone_base->index++; - } - - tone_base->note = tone_base->notes[tone_base->index].note; - tone_base->duration = tone_base->notes[tone_base->index].duration; - - /* Start playing the next note */ - if (tone_base->note != NOTE_REST) - { - tone(tone_base->pin, tone_base->note, tone_base->duration); - } - - tone_base->duration = tone_base->duration * 1.2; - - return; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayStart(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_C4; - tone_base->notes[0].duration = TONE_DUR_TICK(8); - tone_base->notes[1].note = NOTE_REST; - tone_base->notes[1].duration = TONE_DUR_TICK(6); - tone_base->notes[2].note = NOTE_D4; - tone_base->notes[2].duration = TONE_DUR_TICK(8); - tone_base->notes[3].note = NOTE_REST; - tone_base->notes[3].duration = TONE_DUR_TICK(6); - tone_base->notes[4].note = NOTE_C4; - tone_base->notes[4].duration = TONE_DUR_TICK(8); - tone_base->notes[5].note = NOTE_REST; - tone_base->notes[5].duration = TONE_DUR_TICK(2); - - tone_base->size = 6; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayAction(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_F5; - tone_base->notes[0].duration = TONE_DUR_TICK(6); - tone_base->notes[1].note = NOTE_C4; - tone_base->notes[1].duration = TONE_DUR_TICK(8); - tone_base->notes[2].note = NOTE_F5; - tone_base->notes[2].duration = TONE_DUR_TICK(6); - - tone_base->size = 2; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayArrive(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_Cs6; - tone_base->notes[0].duration = TONE_DUR_TICK(6); - tone_base->notes[1].note = NOTE_REST; - tone_base->notes[1].duration = TONE_DUR_TICK(6); - tone_base->notes[2].note = NOTE_Ds6; - tone_base->notes[2].duration = TONE_DUR_TICK(6); - tone_base->notes[3].note = NOTE_REST; - tone_base->notes[3].duration = TONE_DUR_TICK(6); - tone_base->notes[4].note = NOTE_Cs6; - tone_base->notes[4].duration = TONE_DUR_TICK(6); - - tone_base->size = 4; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayLeave(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_A5; - tone_base->notes[0].duration = TONE_DUR_TICK(6); - tone_base->notes[1].note = NOTE_REST; - tone_base->notes[1].duration = TONE_DUR_TICK(6); - tone_base->notes[2].note = NOTE_D7; - tone_base->notes[2].duration = TONE_DUR_TICK(6); - tone_base->notes[3].note = NOTE_REST; - tone_base->notes[3].duration = TONE_DUR_TICK(6); - tone_base->notes[4].note = NOTE_A5; - tone_base->notes[4].duration = TONE_DUR_TICK(6); - - tone_base->size = 4; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayAlarm(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_A4; - tone_base->notes[0].duration = TONE_DUR_TICK(4); - tone_base->notes[1].note = NOTE_A4; - tone_base->notes[1].duration = TONE_DUR_TICK(4); - tone_base->notes[2].note = NOTE_A4; - tone_base->notes[2].duration = TONE_DUR_TICK(4); - tone_base->notes[3].note = NOTE_F4; - tone_base->notes[3].duration = TONE_DUR_TICK(5); - tone_base->notes[4].note = NOTE_C5; - tone_base->notes[4].duration = TONE_DUR_TICK(16); - tone_base->notes[5].note = NOTE_A4; - tone_base->notes[5].duration = TONE_DUR_TICK(4); - - tone_base->size = 6; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayAlarm2(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_Fs7; - tone_base->notes[0].duration = TONE_DUR_TICK(8); - tone_base->notes[1].note = NOTE_REST; - tone_base->notes[1].duration = TONE_DUR_TICK(6); - tone_base->notes[2].note = NOTE_Fs7; - tone_base->notes[2].duration = TONE_DUR_TICK(4); - tone_base->notes[3].note = NOTE_REST; - tone_base->notes[3].duration = TONE_DUR_TICK(6); - tone_base->notes[4].note = NOTE_Fs7; - tone_base->notes[4].duration = TONE_DUR_TICK(4); - tone_base->notes[5].note = NOTE_REST; - tone_base->notes[5].duration = TONE_DUR_TICK(2); - - tone_base->size = 6; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayAlarm3(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_E6; - tone_base->notes[0].duration = TONE_DUR_TICK(6); - tone_base->notes[1].note = NOTE_REST; - tone_base->notes[1].duration = TONE_DUR_TICK(8); - tone_base->notes[2].note = NOTE_E6; - tone_base->notes[2].duration = TONE_DUR_TICK(6); - tone_base->notes[3].note = NOTE_REST; - tone_base->notes[3].duration = TONE_DUR_TICK(4); - - tone_base->size = 4; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} -/**********************************************************************************************************************/ -int BrbToneBase_PlayStarWars(BrbToneBase *tone_base) -{ - /* Sanitize */ - if (!tone_base) - return -1; - - tone_base->notes[0].note = NOTE_A4; - tone_base->notes[0].duration = TONE_DUR_TICK(4); - tone_base->notes[1].note = NOTE_A4; - tone_base->notes[1].duration = TONE_DUR_TICK(4); - tone_base->notes[2].note = NOTE_A4; - tone_base->notes[2].duration = TONE_DUR_TICK(4); - tone_base->notes[3].note = NOTE_F4; - tone_base->notes[3].duration = TONE_DUR_TICK(5); - tone_base->notes[4].note = NOTE_C5; - tone_base->notes[4].duration = TONE_DUR_TICK(16); - tone_base->notes[5].note = NOTE_A4; - tone_base->notes[5].duration = TONE_DUR_TICK(4); - tone_base->notes[6].note = NOTE_F4; - tone_base->notes[6].duration = TONE_DUR_TICK(5); - tone_base->notes[7].note = NOTE_C5; - tone_base->notes[7].duration = TONE_DUR_TICK(16); - tone_base->notes[8].note = NOTE_A4; - tone_base->notes[8].duration = TONE_DUR_TICK(2); - tone_base->notes[9].note = NOTE_E5; - tone_base->notes[9].duration = TONE_DUR_TICK(4); - tone_base->notes[10].note = NOTE_E5; - tone_base->notes[10].duration = TONE_DUR_TICK(4); - tone_base->notes[11].note = NOTE_E5; - tone_base->notes[11].duration = TONE_DUR_TICK(4); - tone_base->notes[12].note = NOTE_F5; - tone_base->notes[12].duration = TONE_DUR_TICK(5); - tone_base->notes[13].note = NOTE_C5; - tone_base->notes[13].duration = TONE_DUR_TICK(16); - tone_base->notes[14].note = NOTE_A4; - tone_base->notes[14].duration = TONE_DUR_TICK(4); - tone_base->notes[15].note = NOTE_F4; - tone_base->notes[15].duration = TONE_DUR_TICK(5); - tone_base->notes[16].note = NOTE_C5; - tone_base->notes[16].duration = TONE_DUR_TICK(16); - tone_base->notes[17].note = NOTE_A4; - tone_base->notes[17].duration = TONE_DUR_TICK(2); - tone_base->notes[18].note = NOTE_REST; - tone_base->notes[18].duration = TONE_DUR_TICK(4); - - tone_base->size = 19; - tone_base->loop_max = 1; - tone_base->index = -1; - tone_base->flags.enabled = 1; - - return 0; -} +/* + * BrbToneBase.cpp + * + * Created on: 2018-02-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2019 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "BrbToneBase.h" + +int BrbToneBase_PlayStarWars(BrbToneBase *tone_base); + +/**********************************************************************************************************************/ +int BrbToneBase_Init(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + /* Current note has expired */ + if (tone_base->duration > 0 || tone_base->pin < 2 || tone_base->pin > NUM_DIGITAL_PINS) + return -1; + + /* Enable pin */ + pinMode(tone_base->pin, OUTPUT); + + BrbToneBase_PlayStart(tone_base); + + /* Do the first loop, if it has items */ + // BrbToneBase_Loop(tone_base); + + return 0; +} +/**********************************************************************************************************************/ +void BrbToneBase_Loop(BrbToneBase *tone_base) +{ + /* Tone is disabled */ + if (!tone_base->flags.enabled || tone_base->pin < 2 || tone_base->pin > NUM_DIGITAL_PINS) + return; + + if (tone_base->index >= 0) + { + tone_base->ms_delta = (millis() - tone_base->ms_last); + tone_base->ms_last = millis(); + + /* Update last duration */ + tone_base->duration = (tone_base->duration - tone_base->ms_delta); + // tone_base->duration = (tone_base->duration - tone_base->brb_base->ms.delay); + + /* Current note has expired */ + if (tone_base->duration > 0) + return; + + noTone(tone_base->pin); + } + + /* Find the next index for note to be played */ + if (tone_base->index >= tone_base->size) + { + tone_base->index = 0; + + /* We have finished, increase loop count */ + tone_base->loop_cnt++; + + if ((tone_base->loop_max > 0 && tone_base->loop_cnt >= tone_base->loop_max) || tone_base->note == NOTE_FINISH) + { + tone_base->flags.enabled = 0; + tone_base->loop_cnt = 0; + + return; + } + } + else + { + tone_base->index++; + } + + tone_base->note = tone_base->notes[tone_base->index].note; + tone_base->duration = tone_base->notes[tone_base->index].duration; + + /* Start playing the next note */ + if (tone_base->note != NOTE_REST) + { + tone(tone_base->pin, tone_base->note, tone_base->duration); + } + + tone_base->duration = tone_base->duration * 1.2; + + return; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayStart(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_C4; + tone_base->notes[0].duration = TONE_DUR_TICK(8); + tone_base->notes[1].note = NOTE_REST; + tone_base->notes[1].duration = TONE_DUR_TICK(6); + tone_base->notes[2].note = NOTE_D4; + tone_base->notes[2].duration = TONE_DUR_TICK(8); + tone_base->notes[3].note = NOTE_REST; + tone_base->notes[3].duration = TONE_DUR_TICK(6); + tone_base->notes[4].note = NOTE_C4; + tone_base->notes[4].duration = TONE_DUR_TICK(8); + tone_base->notes[5].note = NOTE_REST; + tone_base->notes[5].duration = TONE_DUR_TICK(2); + + tone_base->size = 6; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayAction(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_F5; + tone_base->notes[0].duration = TONE_DUR_TICK(6); + tone_base->notes[1].note = NOTE_C4; + tone_base->notes[1].duration = TONE_DUR_TICK(8); + tone_base->notes[2].note = NOTE_F5; + tone_base->notes[2].duration = TONE_DUR_TICK(6); + + tone_base->size = 2; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayArrive(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_Cs6; + tone_base->notes[0].duration = TONE_DUR_TICK(6); + tone_base->notes[1].note = NOTE_REST; + tone_base->notes[1].duration = TONE_DUR_TICK(6); + tone_base->notes[2].note = NOTE_Ds6; + tone_base->notes[2].duration = TONE_DUR_TICK(6); + tone_base->notes[3].note = NOTE_REST; + tone_base->notes[3].duration = TONE_DUR_TICK(6); + tone_base->notes[4].note = NOTE_Cs6; + tone_base->notes[4].duration = TONE_DUR_TICK(6); + + tone_base->size = 4; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayLeave(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_A5; + tone_base->notes[0].duration = TONE_DUR_TICK(6); + tone_base->notes[1].note = NOTE_REST; + tone_base->notes[1].duration = TONE_DUR_TICK(6); + tone_base->notes[2].note = NOTE_D7; + tone_base->notes[2].duration = TONE_DUR_TICK(6); + tone_base->notes[3].note = NOTE_REST; + tone_base->notes[3].duration = TONE_DUR_TICK(6); + tone_base->notes[4].note = NOTE_A5; + tone_base->notes[4].duration = TONE_DUR_TICK(6); + + tone_base->size = 4; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayAlarm(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_A4; + tone_base->notes[0].duration = TONE_DUR_TICK(4); + tone_base->notes[1].note = NOTE_A4; + tone_base->notes[1].duration = TONE_DUR_TICK(4); + tone_base->notes[2].note = NOTE_A4; + tone_base->notes[2].duration = TONE_DUR_TICK(4); + tone_base->notes[3].note = NOTE_F4; + tone_base->notes[3].duration = TONE_DUR_TICK(5); + tone_base->notes[4].note = NOTE_C5; + tone_base->notes[4].duration = TONE_DUR_TICK(16); + tone_base->notes[5].note = NOTE_A4; + tone_base->notes[5].duration = TONE_DUR_TICK(4); + + tone_base->size = 6; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayAlarm2(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_Fs7; + tone_base->notes[0].duration = TONE_DUR_TICK(8); + tone_base->notes[1].note = NOTE_REST; + tone_base->notes[1].duration = TONE_DUR_TICK(6); + tone_base->notes[2].note = NOTE_Fs7; + tone_base->notes[2].duration = TONE_DUR_TICK(4); + tone_base->notes[3].note = NOTE_REST; + tone_base->notes[3].duration = TONE_DUR_TICK(6); + tone_base->notes[4].note = NOTE_Fs7; + tone_base->notes[4].duration = TONE_DUR_TICK(4); + tone_base->notes[5].note = NOTE_REST; + tone_base->notes[5].duration = TONE_DUR_TICK(2); + + tone_base->size = 6; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayAlarm3(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_E6; + tone_base->notes[0].duration = TONE_DUR_TICK(6); + tone_base->notes[1].note = NOTE_REST; + tone_base->notes[1].duration = TONE_DUR_TICK(8); + tone_base->notes[2].note = NOTE_E6; + tone_base->notes[2].duration = TONE_DUR_TICK(6); + tone_base->notes[3].note = NOTE_REST; + tone_base->notes[3].duration = TONE_DUR_TICK(4); + + tone_base->size = 4; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} +/**********************************************************************************************************************/ +int BrbToneBase_PlayStarWars(BrbToneBase *tone_base) +{ + /* Sanitize */ + if (!tone_base) + return -1; + + tone_base->notes[0].note = NOTE_A4; + tone_base->notes[0].duration = TONE_DUR_TICK(4); + tone_base->notes[1].note = NOTE_A4; + tone_base->notes[1].duration = TONE_DUR_TICK(4); + tone_base->notes[2].note = NOTE_A4; + tone_base->notes[2].duration = TONE_DUR_TICK(4); + tone_base->notes[3].note = NOTE_F4; + tone_base->notes[3].duration = TONE_DUR_TICK(5); + tone_base->notes[4].note = NOTE_C5; + tone_base->notes[4].duration = TONE_DUR_TICK(16); + tone_base->notes[5].note = NOTE_A4; + tone_base->notes[5].duration = TONE_DUR_TICK(4); + tone_base->notes[6].note = NOTE_F4; + tone_base->notes[6].duration = TONE_DUR_TICK(5); + tone_base->notes[7].note = NOTE_C5; + tone_base->notes[7].duration = TONE_DUR_TICK(16); + tone_base->notes[8].note = NOTE_A4; + tone_base->notes[8].duration = TONE_DUR_TICK(2); + tone_base->notes[9].note = NOTE_E5; + tone_base->notes[9].duration = TONE_DUR_TICK(4); + tone_base->notes[10].note = NOTE_E5; + tone_base->notes[10].duration = TONE_DUR_TICK(4); + tone_base->notes[11].note = NOTE_E5; + tone_base->notes[11].duration = TONE_DUR_TICK(4); + tone_base->notes[12].note = NOTE_F5; + tone_base->notes[12].duration = TONE_DUR_TICK(5); + tone_base->notes[13].note = NOTE_C5; + tone_base->notes[13].duration = TONE_DUR_TICK(16); + tone_base->notes[14].note = NOTE_A4; + tone_base->notes[14].duration = TONE_DUR_TICK(4); + tone_base->notes[15].note = NOTE_F4; + tone_base->notes[15].duration = TONE_DUR_TICK(5); + tone_base->notes[16].note = NOTE_C5; + tone_base->notes[16].duration = TONE_DUR_TICK(16); + tone_base->notes[17].note = NOTE_A4; + tone_base->notes[17].duration = TONE_DUR_TICK(2); + tone_base->notes[18].note = NOTE_REST; + tone_base->notes[18].duration = TONE_DUR_TICK(4); + + tone_base->size = 19; + tone_base->loop_max = 1; + tone_base->index = -1; + tone_base->flags.enabled = 1; + + return 0; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/lib/BrbToneBase/BrbToneBase.h b/lib/BrbToneBase/BrbToneBase.h index a52b98f..e11da38 100644 --- a/lib/BrbToneBase/BrbToneBase.h +++ b/lib/BrbToneBase/BrbToneBase.h @@ -1,257 +1,257 @@ -/* - * BrbToneBase.h - * - * Created on: 2018-02-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef BRB_TONE_H_ -#define BRB_TONE_H_ - -#include "Arduino.h" - -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ -// #define NOTE_SIZE ((9*12)+1) - -#ifndef TONE_NOTES_MAX -#define TONE_NOTES_MAX (32) -#endif - -#ifndef TONE_TEMPO -#define TONE_TEMPO (120) -#endif - -/* Convert TONE_TEMPO (BPM) to one millisecond ticks */ -#define TONE_TICKS ((60.0 * 4.0 / TONE_TEMPO) * 1000) - -#define TONE_DUR_TICK(t) (int)(TONE_TICKS / t + 0.1) - -/* Some predefined ticks */ -#define TONE_DUR_SIXTEENTH (int)(TONE_TICKS / 4) -#define TONE_DUR_EIGHTH (int)(TONE_TICKS / 2) - -#define TONE_DUR_QUARTER (int)(TONE_TICKS) -#define TONE_DUR_DOTTED_QUARTER (int)(TONE_TICKS + (TONE_TICKS / 2)) -#define TONE_DUR_HALF (int)(TONE_TICKS * 2) -#define TONE_DUR_DOTTED_HALF (int)(TONE_TICKS * 3) -#define TONE_DUR_WHOLE (int)(TONE_TICKS * 4) -/**********************************************************/ -/* - * Table of Musical Notes and Their Frequencies and Wavelengths - * - * A number of calculations useful to builders of stringed musical instruments - * require the frequency or wavelength of a note as input data. - * - * The following table presents the frequencies of all notes in ten octaves to - * a thousandth of a hertz. Octaves are presented in the Scientific Pitch - * Notation format, also commonly referred to as American Pitch Notation and - * International Pitch Notation. - * - * Integer note frequencies for tone() - * Lowest frequency on piano: 27.5 Hz - * Highest frequency on piano: 4186.01 Hz - * Middle C is C4 - * http://www.liutaiomottola.com/formulae/freqtab.htm - * - * The Arduino tone() function may not play frequencies below NOTE_B2 (123 Hz) - */ - -#define NOTE_FINISH (-1) -#define NOTE_REST 0 - -#define NOTE_C0 16 -#define NOTE_Cs0 17 -#define NOTE_D0 18 -#define NOTE_Ds0 19 -#define NOTE_E0 21 -#define NOTE_F0 22 -#define NOTE_Fs0 23 -#define NOTE_G0 25 -#define NOTE_Gs0 26 -#define NOTE_A0 28 -#define NOTE_As0 29 -#define NOTE_B0 31 - -#define NOTE_C1 33 -#define NOTE_Cs1 35 -#define NOTE_D1 37 -#define NOTE_Ds1 39 -#define NOTE_E1 41 -#define NOTE_F1 44 -#define NOTE_Fs1 46 -#define NOTE_G1 49 -#define NOTE_Gs1 52 -#define NOTE_A1 55 -#define NOTE_As1 58 -#define NOTE_B1 62 - -#define NOTE_C2 65 -#define NOTE_Cs2 70 -#define NOTE_D2 73 -#define NOTE_Ds2 78 -#define NOTE_E2 82 -#define NOTE_F2 87 -#define NOTE_Fs2 93 -#define NOTE_G2 98 -#define NOTE_Gs2 104 -#define NOTE_A2 110 -#define NOTE_As2 117 -#define NOTE_B2 123 - -#define NOTE_C3 131 -#define NOTE_Cs3 139 -#define NOTE_D3 147 -#define NOTE_Ds3 156 -#define NOTE_E3 165 -#define NOTE_F3 175 -#define NOTE_Fs3 185 -#define NOTE_G3 196 -#define NOTE_Gs3 208 -#define NOTE_A3 220 -#define NOTE_As3 233 -#define NOTE_B3 247 - -#define NOTE_C4 261 -#define NOTE_Cs4 277 -#define NOTE_D4 294 -#define NOTE_Ds4 311 -#define NOTE_E4 330 -#define NOTE_F4 349 -#define NOTE_Fs4 370 -#define NOTE_G4 392 -#define NOTE_Gs4 415 -#define NOTE_A4 440 -#define NOTE_As4 466 -#define NOTE_B4 494 - -#define NOTE_C5 523 -#define NOTE_Cs5 554 -#define NOTE_D5 587 -#define NOTE_Ds5 622 -#define NOTE_E5 659 -#define NOTE_F5 698 -#define NOTE_Fs5 740 -#define NOTE_G5 784 -#define NOTE_Gs5 831 -#define NOTE_A5 880 -#define NOTE_As5 932 -#define NOTE_B5 988 - -#define NOTE_C6 1047 -#define NOTE_Cs6 1109 -#define NOTE_D6 1175 -#define NOTE_Ds6 1245 -#define NOTE_E6 1319 -#define NOTE_F6 1397 -#define NOTE_Fs6 1480 -#define NOTE_G6 1568 -#define NOTE_Gs6 1661 -#define NOTE_A6 1760 -#define NOTE_As6 1865 -#define NOTE_B6 1976 - -#define NOTE_C7 2093 -#define NOTE_Cs7 2217 -#define NOTE_D7 2349 -#define NOTE_Ds7 2489 -#define NOTE_E7 2637 -#define NOTE_F7 2794 -#define NOTE_Fs7 2960 -#define NOTE_G7 3136 -#define NOTE_Gs7 3322 -#define NOTE_A7 3520 -#define NOTE_As7 3729 -#define NOTE_B7 3951 - -#define NOTE_C8 4186 -#define NOTE_Cs8 4435 -#define NOTE_D8 4699 -#define NOTE_Ds8 4978 -#define NOTE_E8 5274 -#define NOTE_F8 5588 -#define NOTE_Fs8 5920 -#define NOTE_G8 6272 -#define NOTE_Gs8 6645 -#define NOTE_A8 7040 -#define NOTE_As8 7459 -#define NOTE_B8 7902 - -#define NOTE_C9 8372 -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef struct _BrbToneNote -{ - int note; - int duration; - -} BrbToneNote; - -typedef struct _BrbToneBase -{ - BrbToneNote notes[TONE_NOTES_MAX]; - - long ms_last; - long ms_delta; - - int index; - int size; - int duration; - int note; - - int loop_max; - int loop_cnt; - - int pin; - - struct { - unsigned int enabled:1; - } flags; - -} BrbToneBase; -/**********************************************************************************************************************/ -/* FUNCTIONS */ -/**********************************************************/ -int BrbToneBase_Init(BrbToneBase *tone_base); -void BrbToneBase_Loop(BrbToneBase *tone_base); - -int BrbToneBase_PlayAction(BrbToneBase *tone_base); - -int BrbToneBase_PlayArrive(BrbToneBase *tone_base); -int BrbToneBase_PlayLeave(BrbToneBase *tone_base); - -int BrbToneBase_PlayStart(BrbToneBase *tone_base); - -int BrbToneBase_PlayAlarm(BrbToneBase *tone_base); -int BrbToneBase_PlayAlarm2(BrbToneBase *tone_base); -int BrbToneBase_PlayAlarm3(BrbToneBase *tone_base); -/**********************************************************************************************************************/ +/* + * BrbToneBase.h + * + * Created on: 2018-02-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BRB_TONE_H_ +#define BRB_TONE_H_ + +#include "Arduino.h" + +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ +// #define NOTE_SIZE ((9*12)+1) + +#ifndef TONE_NOTES_MAX +#define TONE_NOTES_MAX (32) +#endif + +#ifndef TONE_TEMPO +#define TONE_TEMPO (120) +#endif + +/* Convert TONE_TEMPO (BPM) to one millisecond ticks */ +#define TONE_TICKS ((60.0 * 4.0 / TONE_TEMPO) * 1000) + +#define TONE_DUR_TICK(t) (int)(TONE_TICKS / t + 0.1) + +/* Some predefined ticks */ +#define TONE_DUR_SIXTEENTH (int)(TONE_TICKS / 4) +#define TONE_DUR_EIGHTH (int)(TONE_TICKS / 2) + +#define TONE_DUR_QUARTER (int)(TONE_TICKS) +#define TONE_DUR_DOTTED_QUARTER (int)(TONE_TICKS + (TONE_TICKS / 2)) +#define TONE_DUR_HALF (int)(TONE_TICKS * 2) +#define TONE_DUR_DOTTED_HALF (int)(TONE_TICKS * 3) +#define TONE_DUR_WHOLE (int)(TONE_TICKS * 4) +/**********************************************************/ +/* + * Table of Musical Notes and Their Frequencies and Wavelengths + * + * A number of calculations useful to builders of stringed musical instruments + * require the frequency or wavelength of a note as input data. + * + * The following table presents the frequencies of all notes in ten octaves to + * a thousandth of a hertz. Octaves are presented in the Scientific Pitch + * Notation format, also commonly referred to as American Pitch Notation and + * International Pitch Notation. + * + * Integer note frequencies for tone() + * Lowest frequency on piano: 27.5 Hz + * Highest frequency on piano: 4186.01 Hz + * Middle C is C4 + * http://www.liutaiomottola.com/formulae/freqtab.htm + * + * The Arduino tone() function may not play frequencies below NOTE_B2 (123 Hz) + */ + +#define NOTE_FINISH (-1) +#define NOTE_REST 0 + +#define NOTE_C0 16 +#define NOTE_Cs0 17 +#define NOTE_D0 18 +#define NOTE_Ds0 19 +#define NOTE_E0 21 +#define NOTE_F0 22 +#define NOTE_Fs0 23 +#define NOTE_G0 25 +#define NOTE_Gs0 26 +#define NOTE_A0 28 +#define NOTE_As0 29 +#define NOTE_B0 31 + +#define NOTE_C1 33 +#define NOTE_Cs1 35 +#define NOTE_D1 37 +#define NOTE_Ds1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_Fs1 46 +#define NOTE_G1 49 +#define NOTE_Gs1 52 +#define NOTE_A1 55 +#define NOTE_As1 58 +#define NOTE_B1 62 + +#define NOTE_C2 65 +#define NOTE_Cs2 70 +#define NOTE_D2 73 +#define NOTE_Ds2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_Fs2 93 +#define NOTE_G2 98 +#define NOTE_Gs2 104 +#define NOTE_A2 110 +#define NOTE_As2 117 +#define NOTE_B2 123 + +#define NOTE_C3 131 +#define NOTE_Cs3 139 +#define NOTE_D3 147 +#define NOTE_Ds3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_Fs3 185 +#define NOTE_G3 196 +#define NOTE_Gs3 208 +#define NOTE_A3 220 +#define NOTE_As3 233 +#define NOTE_B3 247 + +#define NOTE_C4 261 +#define NOTE_Cs4 277 +#define NOTE_D4 294 +#define NOTE_Ds4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_Fs4 370 +#define NOTE_G4 392 +#define NOTE_Gs4 415 +#define NOTE_A4 440 +#define NOTE_As4 466 +#define NOTE_B4 494 + +#define NOTE_C5 523 +#define NOTE_Cs5 554 +#define NOTE_D5 587 +#define NOTE_Ds5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_Fs5 740 +#define NOTE_G5 784 +#define NOTE_Gs5 831 +#define NOTE_A5 880 +#define NOTE_As5 932 +#define NOTE_B5 988 + +#define NOTE_C6 1047 +#define NOTE_Cs6 1109 +#define NOTE_D6 1175 +#define NOTE_Ds6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_Fs6 1480 +#define NOTE_G6 1568 +#define NOTE_Gs6 1661 +#define NOTE_A6 1760 +#define NOTE_As6 1865 +#define NOTE_B6 1976 + +#define NOTE_C7 2093 +#define NOTE_Cs7 2217 +#define NOTE_D7 2349 +#define NOTE_Ds7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_Fs7 2960 +#define NOTE_G7 3136 +#define NOTE_Gs7 3322 +#define NOTE_A7 3520 +#define NOTE_As7 3729 +#define NOTE_B7 3951 + +#define NOTE_C8 4186 +#define NOTE_Cs8 4435 +#define NOTE_D8 4699 +#define NOTE_Ds8 4978 +#define NOTE_E8 5274 +#define NOTE_F8 5588 +#define NOTE_Fs8 5920 +#define NOTE_G8 6272 +#define NOTE_Gs8 6645 +#define NOTE_A8 7040 +#define NOTE_As8 7459 +#define NOTE_B8 7902 + +#define NOTE_C9 8372 +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef struct _BrbToneNote +{ + int note; + int duration; + +} BrbToneNote; + +typedef struct _BrbToneBase +{ + BrbToneNote notes[TONE_NOTES_MAX]; + + long ms_last; + long ms_delta; + + int index; + int size; + int duration; + int note; + + int loop_max; + int loop_cnt; + + int pin; + + struct { + unsigned int enabled:1; + } flags; + +} BrbToneBase; +/**********************************************************************************************************************/ +/* FUNCTIONS */ +/**********************************************************/ +int BrbToneBase_Init(BrbToneBase *tone_base); +void BrbToneBase_Loop(BrbToneBase *tone_base); + +int BrbToneBase_PlayAction(BrbToneBase *tone_base); + +int BrbToneBase_PlayArrive(BrbToneBase *tone_base); +int BrbToneBase_PlayLeave(BrbToneBase *tone_base); + +int BrbToneBase_PlayStart(BrbToneBase *tone_base); + +int BrbToneBase_PlayAlarm(BrbToneBase *tone_base); +int BrbToneBase_PlayAlarm2(BrbToneBase *tone_base); +int BrbToneBase_PlayAlarm3(BrbToneBase *tone_base); +/**********************************************************************************************************************/ #endif /* BRB_TONE_H_ */ \ No newline at end of file diff --git a/lib/ILI9341_due/ILI9341_due.cpp b/lib/ILI9341_due/ILI9341_due.cpp index ce41095..d4c3210 100644 --- a/lib/ILI9341_due/ILI9341_due.cpp +++ b/lib/ILI9341_due/ILI9341_due.cpp @@ -1,3423 +1,3423 @@ -/* -ILI9341_due_.cpp - Arduino Due library for interfacing with ILI9341-based TFTs - -Copyright (c) 2014 Marek Buriak - -This library is based on ILI9341_t3 library from Paul Stoffregen -(https://github.com/PaulStoffregen/ILI9341_t3), Adafruit_ILI9341 -and Adafruit_GFX libraries from Limor Fried/Ladyada -(https://github.com/adafruit/Adafruit_ILI9341). - -This file is part of the Arduino ILI9341_due library. -Sources for this library can be found at https://github.com/marekburiak/ILI9341_Due. - -ILI9341_due is free software: you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation, either version 2.1 of the License, or -(at your option) any later version. - -ILI9341_due is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with ILI9341_due. If not, see . -*/ - -/*************************************************** -This is our library for the Adafruit ILI9341 Breakout and Shield -----> http://www.adafruit.com/products/1651 - -Check out the links above for our tutorials and wiring diagrams -These displays use SPI to communicate, 4 or 5 pins are required to -interface (RST is optional) -Adafruit invests time and resources providing this open source code, -please support Adafruit and open-source hardware by purchasing -products from Adafruit! - -Written by Limor Fried/Ladyada for Adafruit Industries. -MIT license, all text above must be included in any redistribution. -****************************************************/ - -#include "ILI9341_due.h" -#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED | defined(ILI_USE_SPI_TRANSACTION) -#include -#endif - -//#include "../Streaming/Streaming.h" - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wattributes" -#pragma GCC diagnostic ignored "-Wswitch" - - -static const uint8_t init_commands[] PROGMEM = { - 4, 0xEF, 0x03, 0x80, 0x02, - 4, 0xCF, 0x00, 0XC1, 0X30, - 5, 0xED, 0x64, 0x03, 0X12, 0X81, - 4, 0xE8, 0x85, 0x00, 0x78, - 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, - 2, 0xF7, 0x20, - 3, 0xEA, 0x00, 0x00, - 2, ILI9341_PWCTR1, 0x23, // Power control - 2, ILI9341_PWCTR2, 0x10, // Power control - 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control - 2, ILI9341_VMCTR2, 0x86, // VCM control2 - 2, ILI9341_MADCTL, 0x48, // Memory Access Control - 2, ILI9341_PIXFMT, 0x55, - 3, ILI9341_FRMCTR1, 0x00, 0x18, - 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control - 2, 0xF2, 0x00, // Gamma Function Disable - 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected - 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, - 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma - 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, - 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma - 0 -}; - - -ILI9341_due::ILI9341_due(uint8_t cs, uint8_t dc, uint8_t rst) -{ - _cs = cs; - _dc = dc; - _rst = rst; - _spiClkDivider = ILI9341_SPI_CLKDIVIDER; - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - _area.x = 0; - _area.y = 0; - _area.w = ILI9341_TFTWIDTH; - _area.h = ILI9341_TFTHEIGHT; - _rotation = iliRotation0; - - _arcAngleMax = DEFAULT_ARC_ANGLE_MAX; - _angleOffset = DEFAULT_ANGLE_OFFSET; - -#ifdef ILI_USE_SPI_TRANSACTION - _isInTransaction = false; -#endif - - _fontMode = gTextFontModeSolid; - _fontBgColor = ILI9341_BLACK; - _fontColor = ILI9341_WHITE; - _letterSpacing = DEFAULT_LETTER_SPACING; - _lineSpacing = DEFAULT_LINE_SPACING; -#ifdef TEXT_SCALING_ENABLED - _textScale = 1; -#endif - _isFirstChar = true; - setTextArea(0, 0, _width - 1, _height - 1); - -} - - -bool ILI9341_due::begin(void) -{ - if (pinIsChipSelect(_cs)) { - pinMode(_dc, OUTPUT); - _dcport = portOutputRegister(digitalPinToPort(_dc)); - _dcpinmask = digitalPinToBitMask(_dc); - -#if SPI_MODE_NORMAL | SPI_MODE_DMA - pinMode(_cs, OUTPUT); - _csport = portOutputRegister(digitalPinToPort(_cs)); - _cspinmask = digitalPinToBitMask(_cs); -#endif - -#if SPI_MODE_NORMAL - SPI.begin(); -#elif SPI_MODE_EXTENDED - SPI.begin(_cs); -#elif SPI_MODE_DMA - dmaBegin(); -#endif - setSPIClockDivider(ILI9341_SPI_CLKDIVIDER); - - // toggle RST low to reset - if (_rst < 255) { - pinMode(_rst, OUTPUT); - digitalWrite(_rst, HIGH); - delay(5); - digitalWrite(_rst, LOW); - delay(20); - digitalWrite(_rst, HIGH); - delay(150); - } - - const uint8_t *addr = init_commands; - while (1) { - uint8_t count = pgm_read_byte(addr++); - if (count-- == 0) break; - writecommand_cont(pgm_read_byte(addr++)); - while (count-- > 0) { - writedata8_cont(pgm_read_byte(addr++)); - } - } - - writecommand_last(ILI9341_SLPOUT); // Exit Sleep - delay(120); - writecommand_last(ILI9341_DISPON); // Display on - delay(120); - _isInSleep = _isIdle = false; - - - - //#ifdef ILI_USE_SPI_TRANSACTION - //#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED - endTransaction(); - //#endif - //#endif - return true; - } - else { - return false; - } -} - -bool ILI9341_due::pinIsChipSelect(uint8_t cs) -{ -#if SPI_MODE_EXTENDED - if (cs == 4 || cs == 10 || cs == 52) // in Extended SPI mode only these pins are valid - { - return true; - } - else - { - Serial.print("Pin "); - Serial.print(_cs); - Serial.println(" is not a valid Chip Select pin for SPI Extended Mode. Valid pins are 4, 10, 52"); - return false; - } -#elif SPI_MODE_NORMAL | SPI_MODE_DMA - return true; -#endif -} - -void ILI9341_due::getDisplayStatus(void) -{ - beginTransaction(); - uint8_t x = readcommand8(ILI9341_RDMODE); - Serial.print(F("\nDisplay Power Mode: 0x")); Serial.println(x, HEX); - Serial.print(F(" Booster: ")); Serial.println(x & 0x80 ? F("On and working OK") : F("Off or has a fault")); - Serial.print(F(" Idle Mode: ")); Serial.println(x & 0x40 ? F("On") : F("Off")); - Serial.print(F(" Partial Mode: ")); Serial.println(x & 0x20 ? F("On") : F("Off")); - Serial.print(F(" Sleep Mode: ")); Serial.println(x & 0x10 ? F("Off") : F("On")); - Serial.print(F(" Display Normal Mode: ")); Serial.println(x & 0x08 ? F("On") : F("Off")); - Serial.print(F(" Display: ")); Serial.println(x & 0x04 ? F("On") : F("Off")); - - x = readcommand8(ILI9341_RDMADCTL); - Serial.print(F("MADCTL Mode: 0x")); Serial.println(x, HEX); - Serial.println(x & 0x80 ? F(" Bottom to Top") : F(" Top to Bottom")); - Serial.println(x & 0x40 ? F(" Right to Left") : F(" Left to Right")); - Serial.println(x & 0x20 ? F(" Normal Mode") : F(" Reverse Mode")); - Serial.println(x & 0x10 ? F(" LCD Refresh Bottom to Top") : F(" LCD Refresh Top to Bottom")); - Serial.println(x & 0x08 ? F(" BGR") : F("RGB")); - Serial.println(x & 0x04 ? F(" LCD Refresh Right to Left") : F(" LCD Refresh Left to Right")); - - x = readcommand8(ILI9341_RDPIXFMT); - Serial.print(F("Pixel Format: 0x")); Serial.println(x, HEX); - if ((x & 0x07) == 0x05) - Serial.println(F(" 16 bits/pixel")); - if ((x & 0x07) == 0x06) - Serial.println(F(" 18 bits/pixel")); - - x = readcommand8(ILI9341_RDIMGFMT); - Serial.print(F("Image Format: 0x")); Serial.println(x, HEX); - if ((x & 0x07) == 0x00) - Serial.println(F(" Gamma curve 1")); - - x = readcommand8(ILI9341_RDDSPSGNMODE); - Serial.print(F("Display Signal Mode: 0x")); Serial.println(x, HEX); - Serial.print(F(" Tearing effect line: ")); Serial.println(x & 0x80 ? F("On") : F("Off")); - Serial.print(F(" Tearing effect line: mode ")); Serial.println(x & 0x40 ? F("2") : F("1")); - Serial.print(F(" Horizontal sync: ")); Serial.println(x & 0x20 ? F("On") : F("Off")); - Serial.print(F(" Vertical sync: ")); Serial.println(x & 0x10 ? F("On") : F("Off")); - Serial.print(F(" Pixel clock: ")); Serial.println(x & 0x08 ? F("On") : F("Off")); - Serial.print(F(" Data enable: ")); Serial.println(x & 0x04 ? F("On") : F("Off")); - - x = readcommand8(ILI9341_RDSELFDIAG); - Serial.print(F("Self Diagnostic: 0x")); Serial.println(x, HEX); - Serial.print(F(" Register Loading: ")); Serial.println(x & 0x80 ? F("working") : F("not working")); - Serial.print(F(" Functionality: ")); Serial.println(x & 0x40 ? F("working") : F("not working")); - - endTransaction(); -} - -void ILI9341_due::setSPIClockDivider(uint8_t divider) -{ - _spiClkDivider = divider; -#ifdef ILI_USE_SPI_TRANSACTION -#if defined (ARDUINO_SAM_DUE) - _spiSettings = SPISettings(F_CPU / divider, MSBFIRST, SPI_MODE0); -#elif defined (ARDUINO_ARCH_AVR) -#if divider == SPI_CLOCK_DIV2 - _spiSettings = SPISettings(F_CPU / 2, MSBFIRST, SPI_MODE0); -#elif divider == SPI_CLOCK_DIV4 - _spiSettings = SPISettings(F_CPU / 4, MSBFIRST, SPI_MODE0); -#elif divider == SPI_CLOCK_DIV8 - _spiSettings = SPISettings(F_CPU / 8, MSBFIRST, SPI_MODE0); -#elif divider == SPI_CLOCK_DIV16 - _spiSettings = SPISettings(F_CPU / 16, MSBFIRST, SPI_MODE0); -#elif divider == SPI_CLOCK_DIV32 - _spiSettings = SPISettings(F_CPU / 32, MSBFIRST, SPI_MODE0); -#elif divider == SPI_CLOCK_DIV64 - _spiSettings = SPISettings(F_CPU / 64, MSBFIRST, SPI_MODE0); -#elif divider == SPI_CLOCK_DIV128 - _spiSettings = SPISettings(F_CPU / 128, MSBFIRST, SPI_MODE0); -#endif -#endif -#endif - -#ifdef ILI_USE_SPI_TRANSACTION - beginTransaction(); -#else -#if SPI_MODE_NORMAL - SPI.setClockDivider(divider); - SPI.setBitOrder(MSBFIRST); - SPI.setDataMode(SPI_MODE0); -#elif SPI_MODE_EXTENDED - SPI.setClockDivider(_cs, divider); - SPI.setBitOrder(_cs, MSBFIRST); - SPI.setDataMode(_cs, SPI_MODE0); -#endif -#endif - -#if SPI_MODE_DMA - dmaInit(divider); -#endif -} - -void ILI9341_due::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) -{ - beginTransaction(); - enableCS(); - setAddrAndRW_cont(x0, y0, x1 - x0 + 1, y1 - y0 + 1); - disableCS(); - endTransaction(); -} - -void ILI9341_due::setAddrWindowRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h) -{ - beginTransaction(); - enableCS(); - setAddrAndRW_cont(x, y, w, h); - disableCS(); - endTransaction(); -} - -void ILI9341_due::pushColor(uint16_t color) -{ - beginTransaction(); - enableCS(); - setDCForData(); - write16_last(color); - endTransaction(); -} - -//void ILI9341_due::pushColors(uint16_t *colors, uint16_t offset, uint16_t len) { -// beginTransaction(); -// enableCS(); -// setDCForData(); -// colors = colors + offset * 2; -//#if SPI_MODE_EXTENDED -// uint16_t i; -// for (i = 0; i < len-1; i++) { -// write16_cont(colors[i]); -// } -// write16_last(colors[i]); -//#else -// for (uint16_t i = 0; i < (len << 1); i += 2) { -// uint16_t color = *colors; -// _scanline[i] = highByte(color); -// _scanline[i + 1] = lowByte(color); -// colors++; -// } -// writeScanline(len); -// disableCS(); -//#endif -// -// endTransaction(); -//} - -// pushes pixels stored in the colors array (one color is 2 bytes) -// in big endian (high byte first) -// len should be the length of the array (so to push 320 pixels, -// you have to have a 640-byte array and len should be 640) -//void ILI9341_due::pushColors565(uint8_t *colors, uint16_t offset, uint32_t len) { -// beginTransaction(); -// enableCS(); -// setDCForData(); -// colors = colors + offset; -// -// //#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED -// // for (uint16_t i = 0; i < len; i++) { -// // write8_cont(colors[i]); -// // } -// //#elif SPI_MODE_DMA -// write_cont(colors, len); -// //#endif -// disableCS(); -// endTransaction(); -//} - -void ILI9341_due::pushColors(const uint16_t *colors, uint16_t offset, uint32_t len) { - beginTransaction(); - enableCS(); - pushColors_noTrans_noCS(colors, offset, len); - disableCS(); - endTransaction(); -} - -void ILI9341_due::pushColors(uint16_t *colors, uint16_t offset, uint32_t len) { - beginTransaction(); - enableCS(); - setDCForData(); - colors = colors + offset; - write_cont(colors, len); - disableCS(); - endTransaction(); -} - -void ILI9341_due::pushColors_noTrans_noCS(const uint16_t *colors, uint16_t offset, uint32_t len) { - setDCForData(); - colors = colors + offset; - -#if SPI_MODE_DMA - const uint32_t numLoops = len / (uint32_t)SCANLINE_PIXEL_COUNT; - for (uint32_t l = 0; l < numLoops; l++) - { - for (uint32_t i = 0; i < SCANLINE_PIXEL_COUNT; i++) - { - _scanline16[i] = colors[l*SCANLINE_PIXEL_COUNT + i]; - } - writeScanline16(SCANLINE_PIXEL_COUNT); - } - uint16_t remainingPixels = len % SCANLINE_PIXEL_COUNT; - if (remainingPixels > 0) { - for (uint32_t i = 0; i < remainingPixels; i++) - { - _scanline16[i] = colors[numLoops*SCANLINE_PIXEL_COUNT + i]; - } - writeScanline16(remainingPixels); - } -#else - write_cont(colors, len); -#endif -} - - -void ILI9341_due::drawPixel(int16_t x, int16_t y, uint16_t color) { - beginTransaction(); - enableCS(); - drawPixel_last(x, y, color); - disableCS(); - endTransaction(); -} - -void ILI9341_due::drawImage(const uint16_t *colors, uint16_t x, uint16_t y, uint16_t w, uint16_t h) { - const uint32_t totalPixels = (uint32_t)w*(uint32_t)h; - beginTransaction(); - enableCS(); - setAddrAndRW_cont(x, y, w, h); - pushColors_noTrans_noCS(colors, 0, totalPixels); - disableCS(); - endTransaction(); -} - -void ILI9341_due::drawFastVLine(int16_t x, int16_t y, uint16_t h, uint16_t color) -{ - beginTransaction(); - drawFastVLine_noTrans(x, y, h, color); - endTransaction(); -} - -void ILI9341_due::drawFastVLine_noTrans(int16_t x, int16_t y, uint16_t h, uint16_t color) -{ - // Rudimentary clipping - if ((x >= _width) || (y >= _height)) return; - if ((y + (int16_t)h - 1) >= _height) h = _height - y; - - fillScanline16(color, min(h, SCANLINE_PIXEL_COUNT)); - - enableCS(); - setAddrAndRW_cont(x, y, 1, h); - setDCForData(); -#ifdef ARDUINO_SAM_DUE - writeScanline16(h); -#elif defined ARDUINO_ARCH_AVR - writeScanlineLooped(h); -#endif - disableCS(); -} - -void ILI9341_due::drawFastVLine_cont_noFill(int16_t x, int16_t y, int16_t h, uint16_t color) -{ - // Rudimentary clipping - // if ((x >= _width) || (y >= _height)) return; - // if ((y + h - 1) >= _height) h = _height - y; - // - // setAddrAndRW_cont(x, y, 1, h); - // setDCForData(); - //#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED - // while (h-- > 0) { - // write16_cont(color); - // } - //#elif SPI_MODE_DMA - // writeScanline(h); - //#endif - - if ((x >= _width) || (y >= _height)) return; - if ((y + h - 1) >= _height) h = _height - y; - - setAddrAndRW_cont(x, y, 1, h); - setDCForData(); -#ifdef ARDUINO_SAM_DUE - writeScanline16(h); -#elif defined ARDUINO_ARCH_AVR - writeScanlineLooped(h); -#endif - -} - -void ILI9341_due::drawFastHLine(int16_t x, int16_t y, uint16_t w, uint16_t color) -{ - beginTransaction(); - drawFastHLine_noTrans(x, y, w, color); - endTransaction(); -} - -void ILI9341_due::drawFastHLine_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t color) -{ - // Rudimentary clipping - if ((x >= _width) || (y >= _height)) return; - if ((x + (int16_t)w - 1) >= _width) w = _width - x; - - - fillScanline16(color, min(w, SCANLINE_PIXEL_COUNT)); - enableCS(); - setAddrAndRW_cont(x, y, w, 1); - setDCForData(); -#ifdef ARDUINO_SAM_DUE - writeScanline16(w); -#elif defined ARDUINO_ARCH_AVR - writeScanlineLooped(w); -#endif - disableCS(); -} - -void ILI9341_due::fillScreen(uint16_t color) -{ - const uint32_t numLoops = (uint32_t)76800 / (uint32_t)SCANLINE_PIXEL_COUNT; - fillScanline16(color); - - beginTransaction(); - enableCS(); - setAddrAndRW_cont(0, 0, _width, _height); - setDCForData(); - for (uint32_t l = 0; l < numLoops; l++) - { - writeScanline16(SCANLINE_PIXEL_COUNT); - } - disableCS(); - endTransaction(); - //#endif -} - -// fill a rectangle -void ILI9341_due::fillRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) -{ - beginTransaction(); - fillRect_noTrans(x, y, w, h, color); - endTransaction(); -} - -void ILI9341_due::fillRectWithShader(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t(*fillShader)(uint16_t rx, uint16_t ry)) -{ - beginTransaction(); - fillRectWithShader_noTrans(x, y, w, h, fillShader); - endTransaction(); -} - - -// fill a rectangle -void ILI9341_due::fillRect_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) -{ - //Serial << "x:" << x << " y:" << y << " w:" << x << " h:" << h << " width:" << _width << " height:" << _height <= _width) || (y >= _height) || (x + w - 1 < 0) || (y + h - 1 < 0)) return; - if ((x + (int16_t)w - 1) >= _width) w = _width - x; - if ((y + (int16_t)h - 1) >= _height) h = _height - y; - - const uint32_t totalPixels = (uint32_t)w*(uint32_t)h; - fillScanline16(color, min(totalPixels, SCANLINE_PIXEL_COUNT)); - enableCS(); - setAddrAndRW_cont(x, y, w, h); - setDCForData(); - writeScanlineLooped(totalPixels); - disableCS(); -} - -void ILI9341_due::fillRectWithShader_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t(*fillShader)(uint16_t rx, uint16_t ry)) -{ - //Serial << "x:" << x << " y:" << y << " w:" << x << " h:" << h << " width:" << _width << " height:" << _height <= _width) || (y >= _height) || (x + w - 1 < 0) || (y + h - 1 < 0)) return; - if ((x + (int16_t)w - 1) >= _width) w = _width - x; - if ((y + (int16_t)h - 1) >= _height) h = _height - y; - - enableCS(); - setAddrAndRW_cont(x, y, w, h); - setDCForData(); - for (uint16_t ry = 0; ry < h; ry++) { - for (uint16_t rx = 0; rx < w; rx++) - { - _scanline16[rx] = fillShader(rx, ry); - } - writeScanline16(w); - } - disableCS(); -} - -#define MADCTL_MY 0x80 -#define MADCTL_MX 0x40 -#define MADCTL_MV 0x20 -#define MADCTL_ML 0x10 -#define MADCTL_RGB 0x00 -#define MADCTL_BGR 0x08 -#define MADCTL_MH 0x04 - -void ILI9341_due::setRotation(iliRotation r) -{ - beginTransaction(); - writecommand_cont(ILI9341_MADCTL); - _rotation = r; - switch (r) { - case iliRotation0: - writedata8_last(MADCTL_MX | MADCTL_BGR); - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - break; - case iliRotation90: - writedata8_last(MADCTL_MV | MADCTL_BGR); - _width = ILI9341_TFTHEIGHT; - _height = ILI9341_TFTWIDTH; - break; - case iliRotation180: - writedata8_last(MADCTL_MY | MADCTL_BGR); - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - break; - case iliRotation270: - writedata8_last(MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); - _width = ILI9341_TFTHEIGHT; - _height = ILI9341_TFTWIDTH; - break; - } - //_area.x = 0; - //_area.y = 0; - _area.w = _width; - _area.h = _height; - endTransaction(); -} - - -void ILI9341_due::invertDisplay(boolean i) -{ - beginTransaction(); - writecommand_last(i ? ILI9341_INVON : ILI9341_INVOFF); - endTransaction(); -} - - -// Reads one pixel/color from the TFT's GRAM -uint16_t ILI9341_due::readPixel(int16_t x, int16_t y) -{ - beginTransaction(); - //setAddr_cont(x, y, x + 1, y + 1); ? should it not be x,y,x,y? - setAddr_cont(x, y, 1, 1); - writecommand_cont(ILI9341_RAMRD); // read from RAM - readdata8_cont(); // dummy read - uint8_t red = read8_cont(); - uint8_t green = read8_cont(); - uint8_t blue = read8_last(); - uint16_t color = color565(red, green, blue); - endTransaction(); - return color; - -} - -//void ILI9341_due::drawArc(uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, uint16_t start, uint16_t end, uint16_t color) { -// //void graphics_draw_arc(GContext *ctx, GPoint p, int radius, int thickness, int start, int end) { -// start = start % 360; -// end = end % 360; -// -// while (start < 0) start += 360; -// while (end < 0) end += 360; -// -// if (end == 0) end = 360; -// -// //Serial << "start: " << start << " end:" << end << endl; -// -// // Serial << (float)cos_lookup(start * ARC_MAX_STEPS / 360) << " x " << (float)sin_lookup(start * ARC_MAX_STEPS / 360) << endl; -// -// float sslope = (float)cos_lookup(start * ARC_MAX_STEPS / 360) / (float)sin_lookup(start * ARC_MAX_STEPS / 360); -// float eslope = (float)cos_lookup(end * ARC_MAX_STEPS / 360) / (float)sin_lookup(end * ARC_MAX_STEPS / 360); -// -// //Serial << "sslope: " << sslope << " eslope:" << eslope << endl; -// -// if (end == 360) eslope = -1000000; -// -// int ir2 = (radius - thickness) * (radius - thickness); -// int or2 = radius * radius; -// -// for (int x = -radius; x <= radius; x++) -// for (int y = -radius; y <= radius; y++) -// { -// int x2 = x * x; -// int y2 = y * y; -// -// if ( -// (x2 + y2 < or2 && x2 + y2 >= ir2) && -// ( -// (y > 0 && start < 180 && x <= y * sslope) || -// (y < 0 && start > 180 && x >= y * sslope) || -// (y < 0 && start <= 180) || -// (y == 0 && start <= 180 && x < 0) || -// (y == 0 && start == 0 && x > 0) -// ) && -// ( -// (y > 0 && end < 180 && x >= y * eslope) || -// (y < 0 && end > 180 && x <= y * eslope) || -// (y > 0 && end >= 180) || -// (y == 0 && end >= 180 && x < 0) || -// (y == 0 && start == 0 && x > 0) -// ) -// ) -// drawPixel_cont(cx+x, cy+y, color); -// } -//} - - -// DrawArc function thanks to Jnmattern and his Arc_2.0 (https://github.com/Jnmattern) -void ILI9341_due::fillArcOffsetted(uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float start, float end, uint16_t color) { - int16_t xmin = 65535, xmax = -32767, ymin = 32767, ymax = -32767; - float cosStart, sinStart, cosEnd, sinEnd; - float r, t; - float startAngle, endAngle; - - //Serial << "start: " << start << " end: " << end << endl; - startAngle = (start / _arcAngleMax) * 360; // 252 - endAngle = (end / _arcAngleMax) * 360; // 807 - //Serial << "startAngle: " << startAngle << " endAngle: " << endAngle << endl; - - while (startAngle < 0) startAngle += 360; - while (endAngle < 0) endAngle += 360; - while (startAngle > 360) startAngle -= 360; - while (endAngle > 360) endAngle -= 360; - //Serial << "startAngleAdj: " << startAngle << " endAngleAdj: " << endAngle << endl; - //if (endAngle == 0) endAngle = 360; - - if (startAngle > endAngle) { - fillArcOffsetted(cx, cy, radius, thickness, ((startAngle) / (float)360) * _arcAngleMax, _arcAngleMax, color); - fillArcOffsetted(cx, cy, radius, thickness, 0, ((endAngle) / (float)360) * _arcAngleMax, color); - } - else { - // Calculate bounding box for the arc to be drawn - cosStart = cosDegrees(startAngle); - sinStart = sinDegrees(startAngle); - cosEnd = cosDegrees(endAngle); - sinEnd = sinDegrees(endAngle); - - //Serial << cosStart << " " << sinStart << " " << cosEnd << " " << sinEnd << endl; - - r = radius; - // Point 1: radius & startAngle - t = r * cosStart; - if (t < xmin) xmin = t; - if (t > xmax) xmax = t; - t = r * sinStart; - if (t < ymin) ymin = t; - if (t > ymax) ymax = t; - - // Point 2: radius & endAngle - t = r * cosEnd; - if (t < xmin) xmin = t; - if (t > xmax) xmax = t; - t = r * sinEnd; - if (t < ymin) ymin = t; - if (t > ymax) ymax = t; - - r = radius - thickness; - // Point 3: radius-thickness & startAngle - t = r * cosStart; - if (t < xmin) xmin = t; - if (t > xmax) xmax = t; - t = r * sinStart; - if (t < ymin) ymin = t; - if (t > ymax) ymax = t; - - // Point 4: radius-thickness & endAngle - t = r * cosEnd; - if (t < xmin) xmin = t; - if (t > xmax) xmax = t; - t = r * sinEnd; - if (t < ymin) ymin = t; - if (t > ymax) ymax = t; - - - //Serial << xmin << " " << xmax << " " << ymin << " " << ymax << endl; - // Corrections if arc crosses X or Y axis - if ((startAngle < 90) && (endAngle > 90)) { - ymax = radius; - } - - if ((startAngle < 180) && (endAngle > 180)) { - xmin = -radius; - } - - if ((startAngle < 270) && (endAngle > 270)) { - ymin = -radius; - } - - // Slopes for the two sides of the arc - float sslope = (float)cosStart / (float)sinStart; - float eslope = (float)cosEnd / (float)sinEnd; - - //Serial << "sslope2: " << sslope << " eslope2:" << eslope << endl; - - if (endAngle == 360) eslope = -1000000; - - int ir2 = (radius - thickness) * (radius - thickness); - int or2 = radius * radius; - //Serial << "ymin: " << ymin << " ymax: " << ymax << endl; - - fillScanline16(color); - - enableCS(); - for (int x = xmin; x <= xmax; x++) { - bool y1StartFound = false, y2StartFound = false; - bool y1EndFound = false, y2EndSearching = false; - int y1s = 0, y1e = 0, y2s = 0; - for (int y = ymin; y <= ymax; y++) - { - int x2 = x * x; - int y2 = y * y; - - if ( - (x2 + y2 < or2 && x2 + y2 >= ir2) && ( - (y > 0 && startAngle < 180 && x <= y * sslope) || - (y < 0 && startAngle > 180 && x >= y * sslope) || - (y < 0 && startAngle <= 180) || - (y == 0 && startAngle <= 180 && x < 0) || - (y == 0 && startAngle == 0 && x > 0) - ) && ( - (y > 0 && endAngle < 180 && x >= y * eslope) || - (y < 0 && endAngle > 180 && x <= y * eslope) || - (y > 0 && endAngle >= 180) || - (y == 0 && endAngle >= 180 && x < 0) || - (y == 0 && startAngle == 0 && x > 0))) - { - if (!y1StartFound) //start of the higher line found - { - y1StartFound = true; - y1s = y; - } - else if (y1EndFound && !y2StartFound) //start of the lower line found - { - //Serial << "Found y2 start x: " << x << " y:" << y << endl; - y2StartFound = true; - //drawPixel_cont(cx+x, cy+y, ILI9341_BLUE); - y2s = y; - y += y1e - y1s - 1; // calculate the most probable end of the lower line (in most cases the length of lower line is equal to length of upper line), in the next loop we will validate if the end of line is really there - if (y > ymax - 1) // the most probable end of line 2 is beyond ymax so line 2 must be shorter, thus continue with pixel by pixel search - { - y = y2s; // reset y and continue with pixel by pixel search - y2EndSearching = true; - } - - //Serial << "Upper line length: " << (y1e - y1s) << " Setting y to " << y << endl; - } - else if (y2StartFound && !y2EndSearching) - { - // we validated that the probable end of the lower line has a pixel, continue with pixel by pixel search, in most cases next loop with confirm the end of lower line as it will not find a valid pixel - y2EndSearching = true; - } - //Serial << "x:" << x << " y:" << y << endl; - //drawPixel_cont(cx+x, cy+y, ILI9341_BLUE); - } - else - { - if (y1StartFound && !y1EndFound) //higher line end found - { - y1EndFound = true; - y1e = y - 1; - //Serial << "line: " << y1s << " - " << y1e << endl; - drawFastVLine_cont_noFill(cx + x, cy + y1s, y - y1s, color); - if (y < 0) - { - //Serial << x << " " << y << endl; - y = abs(y); // skip the empty middle - } - else - break; - } - else if (y2StartFound) - { - if (y2EndSearching) - { - //Serial << "Found final end at y: " << y << endl; - // we found the end of the lower line after pixel by pixel search - drawFastVLine_cont_noFill(cx + x, cy + y2s, y - y2s, color); - y2EndSearching = false; - break; - } - else - { - //Serial << "Expected end not found" << endl; - // the expected end of the lower line is not there so the lower line must be shorter - y = y2s; // put the y back to the lower line start and go pixel by pixel to find the end - y2EndSearching = true; - } - } - //else - //drawPixel_cont(cx+x, cy+y, ILI9341_RED); - } - // - - //delay(75); - } - if (y1StartFound && !y1EndFound) - { - y1e = ymax; - //Serial << "line: " << y1s << " - " << y1e << endl; - drawFastVLine_cont_noFill(cx + x, cy + y1s, y1e - y1s + 1, color); - } - else if (y2StartFound && y2EndSearching) // we found start of lower line but we are still searching for the end - { // which we haven't found in the loop so the last pixel in a column must be the end - drawFastVLine_cont_noFill(cx + x, cy + y2s, ymax - y2s + 1, color); - } - } - disableCS(); - } -} - -void ILI9341_due::screenshotToConsole() -{ - uint8_t lastColor[3]; - uint8_t color[3]; - uint32_t sameColorPixelCount = 0; - uint16_t sameColorPixelCount16 = 0; - uint32_t sameColorStartIndex = 0; - uint32_t totalImageDataLength = 0; - Serial.println(); - Serial.println(F("==== PIXEL DATA START ====")); - //uint16_t x=0; - //uint16_t y=0; - beginTransaction(); - setAddr_cont(0, 0, _width, _height); - writecommand_cont(ILI9341_RAMRD); // read from RAM - readdata8_cont(); // dummy read, also sets DC high - -#if SPI_MODE_DMA - read_cont(color, 3); - lastColor[0] = color[0]; - lastColor[1] = color[1]; - lastColor[2] = color[2]; -#elif SPI_MODE_NORMAL | SPI_MODE_EXTENDED - lastColor[0] = color[0] = read8_cont(); - lastColor[1] = color[1] = read8_cont(); - lastColor[2] = color[2] = read8_cont(); -#endif - printHex8(color, 3); //write color of the first pixel - totalImageDataLength += 6; - sameColorStartIndex = 0; - - for (uint32_t i = 1; i < (uint32_t)_width*(uint32_t)_height; i++) - { -#if SPI_MODE_DMA - read_cont(color, 3); -#elif SPI_MODE_NORMAL | SPI_MODE_EXTENDED - color[0] = read8_cont(); - color[1] = read8_cont(); - color[2] = read8_cont(); -#endif - - if (color[0] != lastColor[0] || - color[1] != lastColor[1] || - color[2] != lastColor[2]) - { - sameColorPixelCount = i - sameColorStartIndex; - if (sameColorPixelCount > 65535) - { - sameColorPixelCount16 = 65535; - printHex16(&sameColorPixelCount16, 1); - printHex8(lastColor, 3); - totalImageDataLength += 10; - sameColorPixelCount16 = sameColorPixelCount - 65535; - } - else - sameColorPixelCount16 = sameColorPixelCount; - printHex16(&sameColorPixelCount16, 1); - printHex8(color, 3); - totalImageDataLength += 10; - - sameColorStartIndex = i; - lastColor[0] = color[0]; - lastColor[1] = color[1]; - lastColor[2] = color[2]; - } -} - disableCS(); - endTransaction(); - sameColorPixelCount = (uint32_t)_width*(uint32_t)_height - sameColorStartIndex; - if (sameColorPixelCount > 65535) - { - sameColorPixelCount16 = 65535; - printHex16(&sameColorPixelCount16, 1); - printHex8(lastColor, 3); - totalImageDataLength += 10; - sameColorPixelCount16 = sameColorPixelCount - 65535; - } - else - sameColorPixelCount16 = sameColorPixelCount; - printHex16(&sameColorPixelCount16, 1); - totalImageDataLength += 4; - printHex32(&totalImageDataLength, 1); - - Serial.println(); - Serial.println(F("==== PIXEL DATA END ====")); - Serial.print(F("Total Image Data Length: ")); - Serial.println(totalImageDataLength); -} - -/* -This is the core graphics library for all our displays, providing a common -set of graphics primitives (points, lines, circles, etc.). It needs to bex -paired with a hardware-specific library for each display device we carry -(to handle the lower-level functions). - -Adafruit invests time and resources providing this open source code, please -support Adafruit & open-source hardware by purchasing products from Adafruit! - -Copyright (c) 2013 Adafruit Industries. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -*/ - -// Draw a circle outline -void ILI9341_due::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) -{ - - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - beginTransaction(); - enableCS(); - - drawPixel_cont(x0, y0 + r, color); - drawPixel_cont(x0, y0 - r, color); - drawPixel_cont(x0 + r, y0, color); - drawPixel_cont(x0 - r, y0, color); - - while (x < y) { - if (f >= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - drawPixel_cont(x0 + x, y0 + y, color); - drawPixel_cont(x0 - x, y0 + y, color); - drawPixel_cont(x0 + x, y0 - y, color); - drawPixel_cont(x0 - x, y0 - y, color); - drawPixel_cont(x0 + y, y0 + x, color); - drawPixel_cont(x0 - y, y0 + x, color); - drawPixel_cont(x0 + y, y0 - x, color); - drawPixel_cont(x0 - y, y0 - x, color); - } - disableCS(); - endTransaction(); -} - - -void ILI9341_due::drawCircleHelper(int16_t x0, int16_t y0, - int16_t r, uint8_t cornername, uint16_t color) -{ - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - enableCS(); - while (x < y) { - if (f >= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - if (cornername & 0x4) { - drawPixel_cont(x0 + x, y0 + y, color); - drawPixel_cont(x0 + y, y0 + x, color); - } - if (cornername & 0x2) { - drawPixel_cont(x0 + x, y0 - y, color); - drawPixel_cont(x0 + y, y0 - x, color); - } - if (cornername & 0x8) { - drawPixel_cont(x0 - y, y0 + x, color); - drawPixel_cont(x0 - x, y0 + y, color); - } - if (cornername & 0x1) { - drawPixel_cont(x0 - y, y0 - x, color); - drawPixel_cont(x0 - x, y0 - y, color); - } - } - disableCS(); -} - -void ILI9341_due::fillCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) -{ - beginTransaction(); - drawFastVLine_noTrans(x0, y0 - r, 2 * r + 1, color); - fillCircleHelper(x0, y0, r, 3, 0, color); - endTransaction(); -} - -// Used to do circles and roundrects -// Further optimizations by Chris_CT -void ILI9341_due::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, - uint8_t cornername, int16_t delta, uint16_t color) -{ - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - int16_t ylm = x0 - r; // **added** - -#ifdef ARDUINO_SAM_DUE - fillScanline16(color, 2 * max(x, y) + 1 + delta); -#else - fillScanline16(color); -#endif - - enableCS(); - while (x < y) { - if (f >= 0) { - if (cornername & 0x1) drawFastVLine_cont_noFill(x0 + y, y0 - x, 2 * x + 1 + delta, color); // **moved** - if (cornername & 0x2) drawFastVLine_cont_noFill(x0 - y, y0 - x, 2 * x + 1 + delta, color); // **moved** - ylm = x0 - y; // **added** - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - if ((x0 - x) > ylm) { // **added** - if (cornername & 0x1) drawFastVLine_cont_noFill(x0 + x, y0 - y, 2 * y + 1 + delta, color); - if (cornername & 0x2) drawFastVLine_cont_noFill(x0 - x, y0 - y, 2 * y + 1 + delta, color); - } // **added** -} - disableCS(); -} - -void ILI9341_due::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) -{ - beginTransaction(); - drawLine_noTrans(x0, y0, x1, y1, color); - endTransaction(); -} - -void ILI9341_due::drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t length, uint16_t color) -{ - beginTransaction(); - drawLine_noTrans( - x, - y, - x + length*cosDegrees(angle + _angleOffset), - y + length*sinDegrees(angle + _angleOffset), color); - endTransaction(); -} - - -void ILI9341_due::drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t start, uint16_t length, uint16_t color) -{ - beginTransaction(); - drawLine_noTrans( - x + start*cosDegrees(angle + _angleOffset), - y + start*sinDegrees(angle + _angleOffset), - x + (start + length)*cosDegrees(angle + _angleOffset), - y + (start + length)*sinDegrees(angle + _angleOffset), color); - endTransaction(); -} - -// Bresenham's algorithm - thx wikipedia -void ILI9341_due::drawLine_noTrans(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) -{ - beginTransaction(); - if (y0 == y1) { - if (x1 > x0) { - drawFastHLine_noTrans(x0, y0, x1 - x0 + 1, color); - } - else if (x1 < x0) { - drawFastHLine_noTrans(x1, y0, x0 - x1 + 1, color); - } - else { - drawPixel_last(x0, y0, color); - } - return; - } - else if (x0 == x1) { - if (y1 > y0) { - drawFastVLine_noTrans(x0, y0, y1 - y0 + 1, color); - } - else { - drawFastVLine_noTrans(x0, y1, y0 - y1 + 1, color); - } - return; - } - - bool steep = abs(y1 - y0) > abs(x1 - x0); - if (steep) { - swap(x0, y0); - swap(x1, y1); - } - if (x0 > x1) { - swap(x0, x1); - swap(y0, y1); - } - - int16_t dx, dy; - dx = x1 - x0; - dy = abs(y1 - y0); - - int16_t err = dx >> 1; - int16_t ystep; - - if (y0 < y1) { - ystep = 1; - } - else { - ystep = -1; - } - - int16_t xbegin = x0; - - fillScanline16(color); - - enableCS(); - if (steep) { - for (; x0 <= x1; x0++) { - err -= dy; - if (err < 0) { - int16_t len = x0 - xbegin; - if (len) { -#ifdef ARDUINO_SAM_DUE - writeVLine_cont_noCS_noFill(y0, xbegin, len + 1); -#elif defined ARDUINO_ARCH_AVR - writeVLine_cont_noCS_noScanline(y0, xbegin, len + 1, color); -#endif - } - else { - writePixel_cont(y0, x0, color); - } - xbegin = x0 + 1; - y0 += ystep; - err += dx; - } - } - if (x0 > xbegin + 1) { -#ifdef ARDUINO_SAM_DUE - writeVLine_cont_noCS_noFill(y0, xbegin, x0 - xbegin); -#elif defined ARDUINO_ARCH_AVR - writeVLine_cont_noCS_noScanline(y0, xbegin, x0 - xbegin, color); -#endif - } - - } - else { - for (; x0 <= x1; x0++) { - err -= dy; - if (err < 0) { - int16_t len = x0 - xbegin; - if (len) { -#ifdef ARDUINO_SAM_DUE - writeHLine_cont_noCS_noFill(xbegin, y0, len + 1); -#elif defined ARDUINO_ARCH_AVR - writeHLine_cont_noCS_noScanline(xbegin, y0, len + 1, color); -#endif - } - else { - writePixel_cont(x0, y0, color); - } - xbegin = x0 + 1; - y0 += ystep; - err += dx; - } - } - if (x0 > xbegin + 1) { -#ifdef ARDUINO_SAM_DUE - writeHLine_cont_noCS_noFill(xbegin, y0, x0 - xbegin); -#elif defined ARDUINO_ARCH_AVR - writeHLine_cont_noCS_noScanline(xbegin, y0, x0 - xbegin, color); -#endif - } - } - disableCS(); - endTransaction(); -} - - -// Draw a rectangle -//void ILI9341_due::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) -//{ -// writeHLine_cont(x, y, w, color); -// writeHLine_cont(x, y+h-1, w, color); -// writeVLine_cont(x, y, h, color); -// writeVLine_last(x+w-1, y, h, color); -//} - -void ILI9341_due::drawRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) -{ - beginTransaction(); - - fillScanline16(color, min(SCANLINE_PIXEL_COUNT, max(w, h))); - - enableCS(); - writeHLine_cont_noCS_noFill(x, y, w); - writeHLine_cont_noCS_noFill(x, y + h - 1, w); - writeVLine_cont_noCS_noFill(x, y, h); - writeVLine_cont_noCS_noFill(x + w - 1, y, h); - disableCS(); - endTransaction(); -} - -// Draw a rounded rectangle -void ILI9341_due::drawRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color) -{ - beginTransaction(); - - fillScanline16(color, min(SCANLINE_PIXEL_COUNT, max(w, h))); - - enableCS(); - // smarter version - writeHLine_cont_noCS_noFill(x + r, y, w - 2 * r); // Top - writeHLine_cont_noCS_noFill(x + r, y + h - 1, w - 2 * r); // Bottom - writeVLine_cont_noCS_noFill(x, y + r, h - 2 * r); // Left - writeVLine_cont_noCS_noFill(x + w - 1, y + r, h - 2 * r); // Right - disableCS(); - // draw four corners - drawCircleHelper(x + r, y + r, r, 1, color); - drawCircleHelper(x + w - r - 1, y + r, r, 2, color); - drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color); - drawCircleHelper(x + r, y + h - r - 1, r, 8, color); - endTransaction(); -} - -// Fill a rounded rectangle -void ILI9341_due::fillRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color) -{ - beginTransaction(); - // smarter version - fillRect_noTrans(x + r, y, w - 2 * r, h, color); - - // draw four corners - fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); - fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color); - endTransaction(); -} - -// Draw a triangle -void ILI9341_due::drawTriangle(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color) -{ - beginTransaction(); - drawLine_noTrans(x0, y0, x1, y1, color); - drawLine_noTrans(x1, y1, x2, y2, color); - drawLine_noTrans(x2, y2, x0, y0, color); - endTransaction(); -} - -// Fill a triangle -void ILI9341_due::fillTriangle(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color) -{ - beginTransaction(); - int16_t a, b, y, last; - - // Sort coordinates by Y order (y2 >= y1 >= y0) - if (y0 > y1) { - swap(y0, y1); swap(x0, x1); - } - if (y1 > y2) { - swap(y2, y1); swap(x2, x1); - } - if (y0 > y1) { - swap(y0, y1); swap(x0, x1); - } - - if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing - a = b = x0; - if (x1 < a) a = x1; - else if (x1 > b) b = x1; - if (x2 < a) a = x2; - else if (x2 > b) b = x2; - drawFastHLine_noTrans(a, y0, b - a + 1, color); - endTransaction(); - return; - } - - int16_t - dx01 = x1 - x0, - dy01 = y1 - y0, - dx02 = x2 - x0, - dy02 = y2 - y0, - dx12 = x2 - x1, - dy12 = y2 - y1, - sa = 0, - sb = 0; - - // For upper part of triangle, find scanline crossings for segments - // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 - // is included here (and second loop will be skipped, avoiding a /0 - // error there), otherwise scanline y1 is skipped here and handled - // in the second loop...which also avoids a /0 error here if y0=y1 - // (flat-topped triangle). - if (y1 == y2) last = y1; // Include y1 scanline - else last = y1 - 1; // Skip it - - fillScanline16(color, min(SCANLINE_PIXEL_COUNT, max(x0, max(x1, x2)) - min(x0, min(x1, x2)))); // fill scanline with the widest scanline that'll be used - - enableCS(); - for (y = y0; y <= last; y++) { - a = x0 + sa / dy01; - b = x0 + sb / dy02; - sa += dx01; - sb += dx02; - /* longhand: - a = x0 + (x1 - x0) * (y - y0) / (y1 - y0); - b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); - */ - if (a > b) swap(a, b); - writeHLine_cont_noCS_noFill(a, y, b - a + 1); - } - - // For lower part of triangle, find scanline crossings for segments - // 0-2 and 1-2. This loop is skipped if y1=y2. - sa = dx12 * (y - y1); - sb = dx02 * (y - y0); - for (; y <= y2; y++) { - a = x1 + sa / dy12; - b = x0 + sb / dy02; - sa += dx12; - sb += dx02; - /* longhand: - a = x1 + (x2 - x1) * (y - y1) / (y2 - y1); - b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); - */ - if (a > b) swap(a, b); - writeHLine_cont_noCS_noFill(a, y, b - a + 1); - } - disableCS(); - endTransaction(); -} - -// draws monochrome (single color) bitmaps -void ILI9341_due::drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) -{ - uint16_t i, j, byteWidth = (w + 7) / 8; - - beginTransaction(); - enableCS(); - for (j = 0; j < h; j++) - { - for (i = 0; i < w; i++) - { - if (pgm_read_byte(bitmap + j * byteWidth + i / 8) & (128 >> (i & 7))) { - drawPixel_cont(x + i, y + j, color); - } - } - } - disableCS(); - endTransaction(); -} - -// draws monochrome (single color) bitmaps -void ILI9341_due::drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color, uint16_t bgcolor) -{ - uint16_t i, j, byteWidth = (w + 7) / 8; - - beginTransaction(); - enableCS(); - for (j = 0; j < h; j++) - { - for (i = 0; i < w; i++) - { - if (pgm_read_byte(bitmap + j * byteWidth + i / 8) & (128 >> (i & 7))) { -#if defined ARDUINO_ARCH_AVR - drawPixel_cont(x + i, y + j, color); -#elif defined ARDUINO_SAM_DUE - _scanline16[i] = color; -#endif - } - else - { -#if defined ARDUINO_ARCH_AVR - drawPixel_cont(x + i, y + j, bgcolor); -#elif defined ARDUINO_SAM_DUE - _scanline16[i] = bgcolor; -#endif - } - } -#ifdef ARDUINO_SAM_DUE - setAddrAndRW_cont(x, y + j, w, 1); - setDCForData(); - writeScanline16(w); -#endif - } - disableCS(); - endTransaction(); -} - -uint8_t ILI9341_due::getRotation(void) { - return _rotation; -} - -// if true, tft will be blank (white), -// display's frame buffer is unaffected -// (you can write to it without showing content on the screen) -void ILI9341_due::display(boolean d) { - beginTransaction(); - writecommand_last(d ? ILI9341_DISPON : ILI9341_DISPOFF); - endTransaction(); -} - -// puts display in/out of sleep mode -void ILI9341_due::sleep(boolean s) -{ - beginTransaction(); - writecommand_last(s ? ILI9341_SLPIN : ILI9341_SLPOUT); - endTransaction(); - delay(120); -} - -void ILI9341_due::idle(boolean i) { - beginTransaction(); - writecommand_last(i ? ILI9341_IDMON : ILI9341_IDMOFF); - endTransaction(); -} - - -void ILI9341_due::setPowerLevel(pwrLevel p) -{ - switch (p) - { - case pwrLevelNormal: - if (_isIdle) { idle(false); _isIdle = false; } - if (_isInSleep) { sleep(false); _isInSleep = false; } - break; - case pwrLevelIdle: - if (!_isIdle) { idle(true); _isIdle = true; } - if (_isInSleep) { sleep(false); _isInSleep = false; } - break; - case pwrLevelSleep: - if (!_isInSleep) { sleep(true); _isInSleep = true; } - if (_isIdle) { idle(false); _isIdle = false; } - break; - } -} - - -void ILI9341_due::setArcParams(float arcAngleMax) -{ - _arcAngleMax = arcAngleMax; -} - -void ILI9341_due::setAngleOffset(int16_t angleOffset) -{ - _angleOffset = DEFAULT_ANGLE_OFFSET + angleOffset; -} - -//uint8_t ILI9341_due::spiread(void) { -// uint8_t r = 0; -// -// //SPI.setClockDivider(_cs, 12); // 8-ish MHz (full! speed!) -// //SPI.setBitOrder(_cs, MSBFIRST); -// //SPI.setDataMode(_cs, SPI_MODE0); -// r = SPI.transfer(_cs, 0x00); -// Serial.print("read: 0x"); Serial.print(r, HEX); -// -// return r; -//} -// -//void ILI9341_due::spiwrite(uint8_t c) { -// -// //Serial.print("0x"); Serial.print(c, HEX); Serial.print(", "); -// -// -// //SPI.setClockDivider(_cs, 12); // 8-ish MHz (full! speed!) -// //SPI.setBitOrder(_cs, MSBFIRST); -// //SPI.setDataMode(_cs, SPI_MODE0); -// SPI.transfer(_cs, c); -// -//} - -//void ILI9341_due::writecommand(uint8_t c) { -// //*dcport &= ~dcpinmask; -// digitalWrite(_dc, LOW); -// //*clkport &= ~clkpinmask; // clkport is a NULL pointer when hwSPI==true -// //digitalWrite(_sclk, LOW); -// //*csport &= ~cspinmask; -// //digitalWrite(_cs, LOW); -// -// spiwrite(c); -// -// //*csport |= cspinmask; -// //digitalWrite(_cs, HIGH); -//} -// -// -//void ILI9341_due::writedata(uint8_t c) { -// //*dcport |= dcpinmask; -// digitalWrite(_dc, HIGH); -// //*clkport &= ~clkpinmask; // clkport is a NULL pointer when hwSPI==true -// //digitalWrite(_sclk, LOW); -// //*csport &= ~cspinmask; -// //digitalWrite(_cs, LOW); -// -// spiwrite(c); -// -// //digitalWrite(_cs, HIGH); -// //*csport |= cspinmask; -//} - -void ILI9341_due::printHex8(uint8_t *data, uint8_t length) // prints 8-bit data in hex -{ - char tmp[length * 2 + 1]; - byte first; - byte second; - for (int i = 0; i < length; i++) { - first = (data[i] >> 4) & 0x0f; - second = data[i] & 0x0f; - // base for converting single digit numbers to ASCII is 48 - // base for 10-16 to become upper-case characters A-F is 55 - // note: difference is 7 - tmp[i * 2] = first + 48; - tmp[i * 2 + 1] = second + 48; - if (first > 9) tmp[i * 2] += 7; - if (second > 9) tmp[i * 2 + 1] += 7; - } - tmp[length * 2] = 0; - Serial.print(tmp); -} - - -void ILI9341_due::printHex16(uint16_t *data, uint8_t length) // prints 8-bit data in hex -{ - char tmp[length * 4 + 1]; - byte first; - byte second; - byte third; - byte fourth; - for (int i = 0; i < length; i++) { - first = (data[i] >> 12) & 0x0f; - second = (data[i] >> 8) & 0x0f; - third = (data[i] >> 4) & 0x0f; - fourth = data[i] & 0x0f; - //Serial << first << " " << second << " " << third << " " << fourth << endl; - // base for converting single digit numbers to ASCII is 48 - // base for 10-16 to become upper-case characters A-F is 55 - // note: difference is 7 - tmp[i * 4] = first + 48; - tmp[i * 4 + 1] = second + 48; - tmp[i * 4 + 2] = third + 48; - tmp[i * 4 + 3] = fourth + 48; - //tmp[i*5+4] = 32; // add trailing space - if (first > 9) tmp[i * 4] += 7; - if (second > 9) tmp[i * 4 + 1] += 7; - if (third > 9) tmp[i * 4 + 2] += 7; - if (fourth > 9) tmp[i * 4 + 3] += 7; - } - tmp[length * 4] = 0; - Serial.print(tmp); -} - -void ILI9341_due::printHex32(uint32_t *data, uint8_t length) // prints 8-bit data in hex -{ - char tmp[length * 8 + 1]; - byte dataByte[8]; - for (int i = 0; i < length; i++) { - dataByte[0] = (data[i] >> 28) & 0x0f; - dataByte[1] = (data[i] >> 24) & 0x0f; - dataByte[2] = (data[i] >> 20) & 0x0f; - dataByte[3] = (data[i] >> 16) & 0x0f; - dataByte[4] = (data[i] >> 12) & 0x0f; - dataByte[5] = (data[i] >> 8) & 0x0f; - dataByte[6] = (data[i] >> 4) & 0x0f; - dataByte[7] = data[i] & 0x0f; - //Serial << first << " " << second << " " << third << " " << fourth << endl; - // base for converting single digit numbers to ASCII is 48 - // base for 10-16 to become upper-case characters A-F is 55 - // note: difference is 7 - tmp[i * 4] = dataByte[0] + 48; - tmp[i * 4 + 1] = dataByte[1] + 48; - tmp[i * 4 + 2] = dataByte[2] + 48; - tmp[i * 4 + 3] = dataByte[3] + 48; - tmp[i * 4 + 4] = dataByte[4] + 48; - tmp[i * 4 + 5] = dataByte[5] + 48; - tmp[i * 4 + 6] = dataByte[6] + 48; - tmp[i * 4 + 7] = dataByte[7] + 48; - //tmp[i*5+4] = 32; // add trailing space - if (dataByte[0] > 9) tmp[i * 4] += 7; - if (dataByte[1] > 9) tmp[i * 4 + 1] += 7; - if (dataByte[2] > 9) tmp[i * 4 + 2] += 7; - if (dataByte[3] > 9) tmp[i * 4 + 3] += 7; - if (dataByte[4] > 9) tmp[i * 4 + 4] += 7; - if (dataByte[5] > 9) tmp[i * 4 + 5] += 7; - if (dataByte[6] > 9) tmp[i * 4 + 6] += 7; - if (dataByte[7] > 9) tmp[i * 4 + 7] += 7; - } - tmp[length * 8] = 0; - Serial.print(tmp); -} - - - -void ILI9341_due::clearTextArea() -{ - fillRect(_area.x, _area.y, _area.w, _area.h, _fontBgColor); -} - -void ILI9341_due::clearTextArea(uint16_t color) -{ - fillRect(_area.x, _area.y, _area.w, _area.h, color); -} - -void ILI9341_due::clearTextArea(gTextArea area) -{ - fillRect(area.x, area.y, area.w, area.h, _fontBgColor); -} - -void ILI9341_due::clearTextArea(gTextArea area, uint16_t color) -{ - fillRect(area.x, area.y, area.w, area.h, color); -} - -void ILI9341_due::setTextArea(gTextArea area) //, textMode mode) -{ - _area.x = area.x; - _area.y = area.y; - _area.w = area.w; - _area.h = area.h; - _x = _xStart = area.x; - _y = _yStart = area.y; -} - -//void ILI9341_due::setTextArea(int16_t x0, int16_t y0, int16_t x1, int16_t y1) //, textMode mode) -//{ -// _area.x = x0; -// _area.y = y0; -// _area.x1 = x1; -// _area.y1 = y1; -// _x = x0; -// _y = y0; -//} - -void ILI9341_due::setTextArea(int16_t x, int16_t y, int16_t columns, int16_t rows, gTextFont font) //, textMode mode) -{ - //textMode mode = DEFAULT_SCROLLDIR; - uint16_t x1, y1; - - setFont(font); - - x1 = x + columns * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1) - 1; - y1 = y + rows * (getFontHeight() + 1) - 1; - - setTextArea(x, y, x1, y1); //, mode); -} - -void ILI9341_due::setTextArea(int16_t x, int16_t y, int16_t w, int16_t h) //, textMode mode) -{ - _area.x = x; - _area.y = y; - _area.w = w; - _area.h = h; - _x = _xStart = x; - _y = _xStart = y; -} - -__attribute__((always_inline)) -void ILI9341_due::specialChar(uint8_t c) -{ - - - if (c == '\n') - { - uint8_t height = getFontHeight(); - - /* - * Erase all pixels remaining to edge of text area.on all wraps - * It looks better when using inverted (WHITE) text, on proportional fonts, and - * doing WHITE scroll fills. - * - */ - - - /*if (_fontMode == gTextFontModeSolid && _x < _area.x1) - fillRect(_x, _y, _area.x1 - _x, height, _fontBgColor);*/ - //glcd_Device::SetPixels(_x, _y, _area.x1, _y+height, _fontColor == BLACK ? WHITE : BLACK); - - // /* - // * Check for scroll up vs scroll down (scrollup is normal) - // */ - //#ifndef GLCD_NO_SCROLLDOWN - // if (_area.mode == SCROLL_UP) - //#endif - // { - // - // /* - // * Normal/up scroll - // */ - // - // /* - // * Note this comparison and the pixel calcuation below takes into - // * consideration that fonts - // * are atually 1 pixel taller when rendered. - // * This extra pixel is along the bottom for a "gap" between the character below. - // */ - // if (_y + 2 * height >= _area.y1) - // { - //#ifndef GLCD_NODEFER_SCROLL - // if (!_needScroll) - // { - // _needScroll = 1; - // return; - // } - //#endif - // - // /* - // * formula for pixels to scroll is: - // * (assumes "height" is one less than rendered height) - // * - // * pixels = height - ((_area.y1 - _y) - height) +1; - // * - // * The forumala below is unchanged - // * But has been re-written/simplified in hopes of better code - // * - // */ - // - // uint8_t pixels = 2 * height + _y - _area.y1 + 1; - // - // /* - // * Scroll everything to make room - // * * NOTE: (FIXME, slight "bug") - // * When less than the full character height of pixels is scrolled, - // * There can be an issue with the newly created empty line. - // * This is because only the # of pixels scrolled will be colored. - // * What it means is that if the area starts off as white and the text - // * color is also white, the newly created empty text line after a scroll - // * operation will not be colored BLACK for the full height of the character. - // * The only way to fix this would be alter the code use a "move pixels" - // * rather than a scroll pixels, and then do a clear to end line immediately - // * after the move and wrap. - // * - // * Currently this only shows up when - // * there are are less than 2xheight pixels below the current Y coordinate to - // * the bottom of the text area - // * and the current background of the pixels below the current text line - // * matches the text color - // * and a wrap was just completed. - // * - // * After a full row of text is printed, the issue will resolve itself. - // * - // * - // */ - // //ScrollUp(_area.x, _area.y, _area.x1, _area.y1, pixels, _fontBgColor); - // - // _x = _area.x; - // _y = _area.y1 - height; - // } - // else - // { - /* - * Room for simple wrap - */ - - _x = _xStart; // _area.x; - _y = _y + (height + _lineSpacing)*_textScale; - _isFirstChar = true; - - // } - // } - //#ifndef GLCD_NO_SCROLLDOWN - // else - // { - // /* - // * Reverse/Down scroll - // */ - // - // /* - // * Check for Wrap vs scroll. - // * - // * Note this comparison and the pixel calcuation below takes into - // * consideration that fonts - // * are atually 1 pixel taller when rendered. - // * - // */ - // if (_y > _area.y + height) - // { - // /* - // * There is room so just do a simple wrap - // */ - // _x = _area.x; - // _y = _y - (height + 1); - // } - // else - // { - //#ifndef GLCD_NODEFER_SCROLL - // if (!_needScroll) - // { - // _needScroll = 1; - // return; - // } - //#endif - // - // /* - // * Scroll down everything to make room for new line - // * (assumes "height" is one less than rendered height) - // */ - // - // uint8_t pixels = height + 1 - (_area.y - _y); - // - // //ScrollDown(_area.x, _area.y, _area.x1, _area.y1, pixels, _fontBgColor); - // - // _x = _area.x; - // _y = _area.y; - // } - // } - //#endif - } - else if (c == '\r') { - _isFirstChar = true; - } - -} - -size_t ILI9341_due::write(uint8_t c) -{ - //Serial << c << endl2; - if (_font == 0) - { - Serial.println(F("No font selected")); - return 0; // no font selected - } - - /* - * check for special character processing - */ - - if (c < 0x20) - { - specialChar(c); - return 1; - } - uint16_t charWidth = 0; - uint16_t charHeight = getFontHeight(); - uint8_t charHeightInBytes = (charHeight + 7) / 8; /* calculates height in rounded up bytes */ - - uint8_t firstChar = pgm_read_byte(_font + GTEXT_FONT_FIRST_CHAR); - uint8_t charCount = pgm_read_byte(_font + GTEXT_FONT_CHAR_COUNT); - - uint16_t index = 0; - - if (c < firstChar || c >= (firstChar + charCount)) { - return 0; // invalid char - } - c -= firstChar; - - if (isFixedWidthFont(_font) { - //thielefont = 0; - charWidth = pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH); - index = c*charHeightInBytes*charWidth + GTEXT_FONT_WIDTH_TABLE; - } - else { - // variable width font, read width data, to get the index - //thielefont = 1; - /* - * Because there is no table for the offset of where the data - * for each character glyph starts, run the table and add up all the - * widths of all the characters prior to the character we - * need to locate. - */ - for (uint8_t i = 0; i < c; i++) { - index += pgm_read_byte(_font + GTEXT_FONT_WIDTH_TABLE + i); - } - /* - * Calculate the offset of where the font data - * for our character starts. - * The index value from above has to be adjusted because - * there is potentially more than 1 byte per column in the glyph, - * when the characgter is taller than 8 bits. - * To account for this, index has to be multiplied - * by the height in bytes because there is one byte of font - * data for each vertical 8 pixels. - * The index is then adjusted to skip over the font width data - * and the font header information. - */ - - index = index*charHeightInBytes + charCount + GTEXT_FONT_WIDTH_TABLE; - - /* - * Finally, fetch the width of our character - */ - charWidth = pgm_read_byte(_font + GTEXT_FONT_WIDTH_TABLE + c); - } - - //#ifndef GLCD_NODEFER_SCROLL - // /* - // * check for a deferred scroll - // * If there is a deferred scroll, - // * Fake a newline to complete it. - // */ - // - // if (_needScroll) - // { - // write('\n'); // fake a newline to cause wrap/scroll - // _needScroll = 0; - // } - //#endif - - /* - * If the character won't fit in the text area, - * fake a newline to get the text area to wrap and - * scroll if necessary. - * NOTE/WARNING: the below calculation assumes a 1 pixel pad. - * This will need to be changed if/when configurable pixel padding is supported. - */ - // if (_wrap && _x + charWidth > _area.x1) - // { - // write('\n'); // fake a newline to cause wrap/scroll - //#ifndef GLCD_NODEFER_SCROLL - // /* - // * We can't defer a scroll at this point since we need to output - // * a character right now. - // */ - // if (_needScroll) - // { - // write('\n'); // fake a newline to cause wrap/scroll - // _needScroll = 0; - // } - //#endif - // } - beginTransaction(); - if (_fontMode == gTextFontModeSolid) - drawSolidChar(c, index, charWidth, charHeight); - else if (_fontMode == gTextFontModeTransparent) - drawTransparentChar(c, index, charWidth, charHeight); - endTransaction(); - - return 1; // valid char -} - -void ILI9341_due::drawSolidChar(char c, uint16_t index, uint16_t charWidth, uint16_t charHeight) -{ - uint8_t bitId = 0; - uint16_t py; -#ifdef ARDUINO_SAM_DUE - uint16_t lineId = 0; -#endif - uint16_t charHeightInBytes = (charHeight + 7) / 8; /* calculates height in rounded up bytes */ - - uint8_t numRenderBits = 8; - const uint8_t numRemainingBits = charHeight % 8 == 0 ? 8 : charHeight % 8; - uint16_t numPixelsInOnePoint = 1; - if (_textScale > 1) - numPixelsInOnePoint = (uint16_t)_textScale *(uint16_t)_textScale; -#ifdef ARDUINO_ARCH_AVR - uint16_t pixelsInOnePointToDraw; -#endif - - if (_letterSpacing > 0 && !_isFirstChar) - { -#ifdef LINE_SPACING_AS_PART_OF_LETTERS - fillRect(_x, _y, _letterSpacing * _textScale, (charHeight + _lineSpacing)*_textScale, _fontBgColor); -#else - fillRect(_x, _y, _letterSpacing * _textScale, charHeight *_textScale, _fontBgColor); -#endif - _x += _letterSpacing * _textScale; - } - _isFirstChar = false; - -#ifdef LINE_SPACING_AS_PART_OF_LETTERS - if (_lineSpacing > 0) { - fillRect(_x, _y + charHeight*_textScale, charWidth * _textScale, _lineSpacing *_textScale, _fontBgColor); - } -#endif - - //#if SPI_MODE_DMA - // if (_textScale > 1) - // fillScanline16(_fontColor, numPixelsInOnePoint); //pre-fill the scanline, we will be drawing different lengths of it - //#endif - - enableCS(); - if (_textScale == 1) - setRowAddr(_y, charHeight); - - for (uint16_t j = 0; j < charWidth; j++) /* each column */ - { - //Serial << "Printing row" << endl; -#ifdef ARDUINO_SAM_DUE - lineId = 0; -#endif - numRenderBits = 8; - if (_x >= 0 && _x < _width) - { - setColumnAddr(_x, _textScale); - - if (_textScale == 1) - { - //setAddrAndRW_cont(_x, _y, 1, charHeight); - setRW(); - setDCForData(); - } - - for (uint16_t i = 0; i < charHeightInBytes; i++) /* each vertical byte */ - { - uint16_t page = i*charWidth; // page must be 16 bit to prevent overflow - uint8_t data = pgm_read_byte(_font + index + page + j); - - /* - * This funkyness is because when the character glyph is not a - * multiple of 8 in height, the residual bits in the font data - * were aligned to the incorrect end of the byte with respect - * to the GLCD. I believe that this was an initial oversight (bug) - * in Thieles font creator program. It is easily fixed - * in the font program but then creates a potential backward - * compatibility problem. - * --- bperrybap - */ - if (charHeight > 8 && charHeight < (i + 1) * 8) /* is it last byte of multibyte tall font? */ - { - data >>= ((i + 1) << 3) - charHeight; // (i+1)*8 - } - //Serial << "data:" <>= 1; - } - - //#ifdef ARDUINO_ARCH_AVR - //if (_textScale == 1 && (lineId == SCANLINE_PIXEL_COUNT - 1 || i == charHeightInBytes - 1)) // we have either filled the buffer or are rendering the bottom portion of the char - //{ - // writeScanline16(numRenderBits); // max 8 - // lineId = 0; - //} - //#endif - - //delay(50); - } - } - //Serial << endl; -#ifdef ARDUINO_SAM_DUE - if (_textScale == 1) - { - writeScanline16(charHeight); - } -#endif - _x += _textScale; - - } - disableCS(); // to put CS line back up - - //_x = cx; - - //Serial << " ending at " << _x << " lastChar " << _lastChar < 0 && !_isFirstChar) - { - _x += _letterSpacing * _textScale; - } - _isFirstChar = false; - - - fillScanline16(_fontColor); //pre-fill the scanline, we will be drawing different lengths of it - - - uint16_t charHeightInBytes = (charHeight + 7) / 8; /* calculates height in rounded up bytes */ - - uint8_t numRenderBits = 8; - const uint8_t numRemainingBits = charHeight % 8 == 0 ? 8 : charHeight % 8; - - enableCS(); - - for (uint8_t j = 0; j < charWidth; j++) /* each column */ - { - //Serial << "Printing row" << endl; - numRenderBits = 8; - - if (_x >= 0 && _x < _width) - { - setColumnAddr(_x, _textScale); - - for (uint16_t i = 0; i < charHeightInBytes; i++) /* each vertical byte */ - { - uint16_t page = i*charWidth; // page must be 16 bit to prevent overflow - uint8_t data = pgm_read_byte(_font + index + page + j); - - /* - * This funkyness is because when the character glyph is not a - * multiple of 8 in height, the residual bits in the font data - * were aligned to the incorrect end of the byte with respect - * to the GLCD. I believe that this was an initial oversight (bug) - * in Thieles font creator program. It is easily fixed - * in the font program but then creates a potential backward - * compatibility problem. - * --- bperrybap - */ - if (charHeight > 8 && charHeight < (i + 1) * 8) /* is it last byte of multibyte tall font? */ - { - data >>= ((i + 1) << 3) - charHeight; // (i+1)*8 - } - //Serial << "data:" <>= 1; - } - - if (lineEnd == (charHeight - 1) * _textScale) // we have a line that goes all the way to the bottom - { - const uint32_t totalPixels = uint32_t(lineEnd - lineStart + _textScale)*(uint32_t)_textScale; - //setRowAddr(_y + lineStart, _y + lineEnd + _textScale - 1); - setRowAddr(_y + lineStart, lineEnd - lineStart + _textScale); - setRW(); - setDCForData(); - writeScanlineLooped(totalPixels); - - ////fillRect(cx, cy + lineStart, _textScale, lineEnd - lineStart + _textScale, ILI9341_BLUEVIOLET); - //setAddrAndRW_cont(_x, _y + lineStart, _textScale, lineEnd - lineStart + _textScale); - //setDCForData(); - - //for (uint8_t s = 0; s < _textScale; s++) - //{ - // writeScanline16(lineEnd - lineStart + _textScale); - // //delay(25); - //} - } - } - } - //Serial << endl; - _x += _textScale; - } - disableCS(); // to put CS line back up - - //_x = cx; -} - -size_t ILI9341_due::print(char c) { - _isFirstChar = true; - beginTransaction(); - write(c); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(unsigned char c, int b) { - _isFirstChar = true; - beginTransaction(); - Print::print(c, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(int d, int b) { - _isFirstChar = true; - beginTransaction(); - Print::print(d, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(unsigned int u, int b) { - _isFirstChar = true; - beginTransaction(); - Print::print(u, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(long l, int b) { - _isFirstChar = true; - beginTransaction(); - Print::print(l, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(unsigned long ul, int b) { - _isFirstChar = true; - beginTransaction(); - Print::print(ul, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(double d, int b) { - _isFirstChar = true; - beginTransaction(); - Print::print(d, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::print(const Printable& str) { - _isFirstChar = true; - beginTransaction(); - Print::print(str); - endTransaction(); - return 0; -} - -size_t ILI9341_due::println(const __FlashStringHelper *str) { - _isFirstChar = true; - beginTransaction(); - Print::println(str); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(const String &str) { - _isFirstChar = true; - beginTransaction(); - Print::println(str); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(const char* str) { - _isFirstChar = true; - beginTransaction(); - Print::println(str); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(char c) { - _isFirstChar = true; - beginTransaction(); - Print::println(c); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(unsigned char c, int b) { - _isFirstChar = true; - beginTransaction(); - Print::println(c, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(int d, int b) { - _isFirstChar = true; - beginTransaction(); - Print::println(d, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(unsigned int u, int b) { - _isFirstChar = true; - beginTransaction(); - Print::println(u, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(long l, int b) { - _isFirstChar = true; - beginTransaction(); - Print::println(l, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(unsigned long ul, int b) { - _isFirstChar = true; - beginTransaction(); - Print::println(ul, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(double d, int b) { - _isFirstChar = true; - beginTransaction(); - Print::println(d, b); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(const Printable& str) { - _isFirstChar = true; - beginTransaction(); - Print::println(str); - endTransaction(); - return 0; -} -size_t ILI9341_due::println(void) { - _isFirstChar = true; - beginTransaction(); - Print::println(); - endTransaction(); - return 0; -} - -size_t ILI9341_due::print(const char *str) -{ - beginTransaction(); - _isFirstChar = true; - while (*str) - { - write((uint8_t)*str); - //_isFirstChar = false; - str++; - } - endTransaction(); - return 0; -} - -size_t ILI9341_due::print(const String &str) -{ - beginTransaction(); - _isFirstChar = true; - for (uint16_t i = 0; i < str.length(); i++) - { - write(str[i]); - //_isFirstChar = false; - } - endTransaction(); - return 0; -} - -size_t ILI9341_due::print(const __FlashStringHelper *str) -{ - beginTransaction(); - _isFirstChar = true; - PGM_P p = reinterpret_cast(str); - uint8_t c; - while ((c = pgm_read_byte(p)) != 0) { - write(c); - //_isFirstChar = false; - p++; - } - endTransaction(); - return 0; -} - -void ILI9341_due::printAt(const char *str, int16_t x, int16_t y) -{ - cursorToXY(x, y); - print(str); -} - -void ILI9341_due::printAt(const String &str, int16_t x, int16_t y) -{ - cursorToXY(x, y); - print(str); -} - -void ILI9341_due::printAt(const __FlashStringHelper *str, int16_t x, int16_t y) -{ - cursorToXY(x, y); - print(str); -} - -void ILI9341_due::printAt(const char *str, int16_t x, int16_t y, gTextEraseLine eraseLine) -{ - cursorToXY(x, y); - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - clearPixelsOnLeft(1024); - print(str); - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - clearPixelsOnRight(1024); -} - -void ILI9341_due::printAt(const String &str, int16_t x, int16_t y, gTextEraseLine eraseLine) -{ - cursorToXY(x, y); - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - clearPixelsOnLeft(1024); - print(str); - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - clearPixelsOnRight(1024); -} - -void ILI9341_due::printAt(const __FlashStringHelper *str, int16_t x, int16_t y, gTextEraseLine eraseLine) -{ - cursorToXY(x, y); - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - clearPixelsOnLeft(1024); - print(str); - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - clearPixelsOnRight(1024); -} - -void ILI9341_due::printAt(const char *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - cursorToXY(x, y); - - // CLEAR PIXELS ON THE LEFT - if (pixelsClearedOnLeft > 0) - clearPixelsOnLeft(pixelsClearedOnLeft); - - print(str); - - // CLEAR PIXELS ON THE RIGHT - if (pixelsClearedOnRight > 0) - clearPixelsOnRight(pixelsClearedOnRight); -} - -void ILI9341_due::printAt(const String &str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - cursorToXY(x, y); - - // CLEAR PIXELS ON THE LEFT - if (pixelsClearedOnLeft > 0) - clearPixelsOnLeft(pixelsClearedOnLeft); - - print(str); - - // CLEAR PIXELS ON THE RIGHT - if (pixelsClearedOnRight > 0) - clearPixelsOnRight(pixelsClearedOnRight); -} - -void ILI9341_due::printAt(const __FlashStringHelper *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - cursorToXY(x, y); - - // CLEAR PIXELS ON THE LEFT - if (pixelsClearedOnLeft > 0) - clearPixelsOnLeft(pixelsClearedOnLeft); - - print(str); - - // CLEAR PIXELS ON THE RIGHT - if (pixelsClearedOnRight > 0) - clearPixelsOnRight(pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAligned(const char *str, gTextAlign align) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, 0, 0); -} - -__attribute__((always_inline)) -void ILI9341_due::printAligned(const String &str, gTextAlign align) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, 0, 0); -} - -__attribute__((always_inline)) -void ILI9341_due::printAligned(const __FlashStringHelper *str, gTextAlign align) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, 0, 0); -} - -void ILI9341_due::printAligned(const char *str, gTextAlign align, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAligned(const String &str, gTextAlign align, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAligned(const __FlashStringHelper *str, gTextAlign align, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAligned(const char *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAligned(const String &str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAligned(const __FlashStringHelper *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, 0, 0); -} - -__attribute__((always_inline)) -void ILI9341_due::printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, 0, 0); -} - -__attribute__((always_inline)) -void ILI9341_due::printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, 0, 0); -} - -void ILI9341_due::printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAtPivoted(const char *str, int16_t x, int16_t y, gTextPivot pivot) -{ - cursorToXY(x, y); - - if (pivot != gTextPivotTopLeft && pivot != gTextPivotDefault) - applyPivot(str, pivot, gTextAlignTopLeft); - - print(str); -} - -void ILI9341_due::printAtPivoted(const String &str, int16_t x, int16_t y, gTextPivot pivot) -{ - cursorToXY(x, y); - - if (pivot != gTextPivotTopLeft && pivot != gTextPivotDefault) - applyPivot(str, pivot, gTextAlignTopLeft); - - print(str); -} - -void ILI9341_due::printAtPivoted(const __FlashStringHelper *str, int16_t x, int16_t y, gTextPivot pivot) -{ - cursorToXY(x, y); - - if (pivot != gTextPivotTopLeft && pivot != gTextPivotDefault) - applyPivot(str, pivot, gTextAlignTopLeft); - - print(str); -} - -void ILI9341_due::printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot) -{ - printAlignedPivotedOffseted(str, align, pivot, 0, 0, 0, 0); -} - -void ILI9341_due::printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot) -{ - printAlignedPivotedOffseted(str, align, pivot, 0, 0, 0, 0); -} - -void ILI9341_due::printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot) -{ - printAlignedPivotedOffseted(str, align, pivot, 0, 0, 0, 0); -} - -void ILI9341_due::printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) -{ - printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, 0, 0); -} - -void ILI9341_due::printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) -{ - printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, 0, 0); -} - -void ILI9341_due::printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) -{ - printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, 0, 0); -} - -void ILI9341_due::printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) -{ - uint16_t pixelsClearedOnLeft = 0; - uint16_t pixelsClearedOnRight = 0; - if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnLeft = 1024; - if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) - pixelsClearedOnRight = 1024; - printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - //Serial << pixelsClearedOnLeft << " " << pixelsClearedOnRight << endl; - _x = _xStart = _area.x; - _y = _yStart = _area.y; - - applyAlignPivotOffset(str, align, pivot, offsetX, offsetY); - - clearPixelsOnLeft(pixelsClearedOnLeft); - print(str); - clearPixelsOnRight(pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - //Serial << pixelsClearedOnLeft << " " << pixelsClearedOnRight << endl; - _x = _xStart = _area.x; - _y = _yStart = _area.y; - - applyAlignPivotOffset(str, align, pivot, offsetX, offsetY); - - clearPixelsOnLeft(pixelsClearedOnLeft); - print(str); - clearPixelsOnRight(pixelsClearedOnRight); -} - -void ILI9341_due::printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) -{ - //Serial << pixelsClearedOnLeft << " " << pixelsClearedOnRight << endl; - _x = _xStart = _area.x; - _y = _yStart = _area.y; - - applyAlignPivotOffset(str, align, pivot, offsetX, offsetY); - - clearPixelsOnLeft(pixelsClearedOnLeft); - print(str); - clearPixelsOnRight(pixelsClearedOnRight); -} - -__attribute__((always_inline)) -void ILI9341_due::clearPixelsOnLeft(uint16_t pixelsToClearOnLeft) { - // CLEAR PIXELS ON THE LEFT - if (pixelsToClearOnLeft > 0) - { - int16_t clearX1 = max(min((int16_t)_x, (int16_t)_area.x), (int16_t)_x - (int16_t)pixelsToClearOnLeft); - //Serial.println(clearX1); - //Serial << "clearPixelsOnLeft " << _x << " " << _area.x << " " << clearX1 << endl2; - fillRect(clearX1, _y, _x - clearX1, scaledFontHeight(), _fontBgColor); - } -} - -__attribute__((always_inline)) -void ILI9341_due::clearPixelsOnRight(uint16_t pixelsToClearOnRight) { - // CLEAR PIXELS ON THE RIGHT - if (pixelsToClearOnRight > 0) - { - int16_t clearX2 = min(max((int16_t)_x, (int16_t)_area.x + (int16_t)_area.w - 1), (int16_t)_x + (int16_t)pixelsToClearOnRight); - //Serial << "area from " << _area.x << " to " << _area.x1 << endl; - //Serial << "clearing on right from " << _x << " to " << clearX2 << endl; - fillRect(_x, _y, clearX2 - _x + 1, scaledFontHeight(), _fontBgColor); - //TOTRY - //fillRect(_x, _y, clearX2 - _x + 1, getFontHeight(), _fontBgColor); - } -} - -void ILI9341_due::applyAlignPivotOffset(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) { - //PIVOT - if (pivot != gTextPivotTopLeft) - applyPivot(str, pivot, align); - - // ALIGN & OFFSET - applyAlignOffset(align, offsetX, offsetY); -} - -void ILI9341_due::applyAlignPivotOffset(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) { - //PIVOT - if (pivot != gTextPivotTopLeft) - applyPivot(str, pivot, align); - - // ALIGN & OFFSET - applyAlignOffset(align, offsetX, offsetY); -} - -void ILI9341_due::applyAlignPivotOffset(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) { - //PIVOT - if (pivot != gTextPivotTopLeft) - applyPivot(str, pivot, align); - - // ALIGN & OFFSET - applyAlignOffset(align, offsetX, offsetY); -} - -void ILI9341_due::applyAlignOffset(gTextAlign align, int16_t offsetX, int16_t offsetY) -{ - if (align != gTextAlignTopLeft) - { - switch (align) - { - case gTextAlignTopCenter: - { - _x += _area.w / 2; - break; - } - case gTextAlignTopRight: - { - _x += _area.w; - break; - } - case gTextAlignMiddleLeft: - { - _y += _area.h / 2; - break; - } - case gTextAlignMiddleCenter: - { - _x += _area.w / 2; - _y += _area.h / 2; - break; - } - case gTextAlignMiddleRight: - { - _x += _area.w; - _y += _area.h / 2; - break; - } - case gTextAlignBottomLeft: - { - _y += _area.h; - break; - } - case gTextAlignBottomCenter: - { - _x += _area.w / 2; - _y += _area.h; - break; - } - case gTextAlignBottomRight: - { - _x += _area.w; - _y += _area.h; - break; - } - } - } - // OFFSET - _x += offsetX; - _y += offsetY; -} - -void ILI9341_due::applyPivot(const String &str, gTextPivot pivot, gTextAlign align) -{ - applyPivot(str.c_str(), pivot, align); -} - -void ILI9341_due::applyPivot(const __FlashStringHelper *str, gTextPivot pivot, gTextAlign align) -{ - //PIVOT - if (pivot == gTextPivotDefault) - { - switch (align) - { - case gTextAlignTopLeft: { pivot = gTextPivotTopLeft; break; } - case gTextAlignTopCenter: { pivot = gTextPivotTopCenter; break; } - case gTextAlignTopRight: { pivot = gTextPivotTopRight; break; } - case gTextAlignMiddleLeft: { pivot = gTextPivotMiddleLeft; break; } - case gTextAlignMiddleCenter: { pivot = gTextPivotMiddleCenter; break; } - case gTextAlignMiddleRight: { pivot = gTextPivotMiddleRight; break; } - case gTextAlignBottomLeft: { pivot = gTextPivotBottomLeft; break; } - case gTextAlignBottomCenter: { pivot = gTextPivotBottomCenter; break; } - case gTextAlignBottomRight: { pivot = gTextPivotBottomRight; break; } - } - } - - if (pivot != gTextPivotTopLeft) - { - switch (pivot) - { - case gTextPivotTopCenter: - { - _x -= getStringWidth(str) / 2; - break; - } - case gTextPivotTopRight: - { - _x -= getStringWidth(str); - break; - } - case gTextPivotMiddleLeft: - { - _y -= scaledFontHeight() / 2; - break; - } - case gTextPivotMiddleCenter: - { - _x -= getStringWidth(str) / 2; - _y -= scaledFontHeight() / 2; - break; - } - case gTextPivotMiddleRight: - { - _x -= getStringWidth(str); - _y -= scaledFontHeight() / 2; - break; - } - case gTextPivotBottomLeft: - { - _y -= scaledFontHeight(); - break; - } - case gTextPivotBottomCenter: - { - _x -= getStringWidth(str) / 2; - _y -= scaledFontHeight(); - break; - } - case gTextPivotBottomRight: - { - _x -= getStringWidth(str); - _y -= scaledFontHeight(); - break; - } - } - } -} - -void ILI9341_due::applyPivot(const char *str, gTextPivot pivot, gTextAlign align) -{ - //PIVOT - if (pivot == gTextPivotDefault) - { - switch (align) - { - case gTextAlignTopLeft: { pivot = gTextPivotTopLeft; break; } - case gTextAlignTopCenter: { pivot = gTextPivotTopCenter; break; } - case gTextAlignTopRight: { pivot = gTextPivotTopRight; break; } - case gTextAlignMiddleLeft: { pivot = gTextPivotMiddleLeft; break; } - case gTextAlignMiddleCenter: { pivot = gTextPivotMiddleCenter; break; } - case gTextAlignMiddleRight: { pivot = gTextPivotMiddleRight; break; } - case gTextAlignBottomLeft: { pivot = gTextPivotBottomLeft; break; } - case gTextAlignBottomCenter: { pivot = gTextPivotBottomCenter; break; } - case gTextAlignBottomRight: { pivot = gTextPivotBottomRight; break; } - } - } - - if (pivot != gTextPivotTopLeft) - { - switch (pivot) - { - case gTextPivotTopCenter: - { - _x -= getStringWidth(str) / 2; - break; - } - case gTextPivotTopRight: - { - _x -= getStringWidth(str); - break; - } - case gTextPivotMiddleLeft: - { - _y -= scaledFontHeight() / 2; - break; - } - case gTextPivotMiddleCenter: - { - _x -= getStringWidth(str) / 2; - _y -= scaledFontHeight() / 2; - break; - } - case gTextPivotMiddleRight: - { - _x -= getStringWidth(str); - _y -= scaledFontHeight() / 2; - break; - } - case gTextPivotBottomLeft: - { - _y -= scaledFontHeight(); - break; - } - case gTextPivotBottomCenter: - { - _x -= getStringWidth(str) / 2; - _y -= scaledFontHeight(); - break; - } - case gTextPivotBottomRight: - { - _x -= getStringWidth(str); - _y -= scaledFontHeight(); - break; - } - } - } -} - -void ILI9341_due::cursorTo(uint8_t column, uint8_t row) -{ - if (_font == 0) - return; // no font selected - - /* - * Text position is relative to current text area - */ - - _x = _xStart = _area.x + column * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1); - _y = _yStart = _area.y + row * (getFontHeight() + _lineSpacing) * _textScale; - _isFirstChar = true; - //#ifndef GLCD_NODEFER_SCROLL - // /* - // * Make sure to clear a deferred scroll operation when repositioning - // */ - // _needScroll = 0; - //#endif -} - -void ILI9341_due::cursorTo(int8_t column) -{ - if (_font == 0) - return; // no font selected - /* - * Text position is relative to current text area - * negative value moves the cursor backwards - */ - if (column >= 0) - _x = _xStart = column * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1) + _area.x; - else - _x -= column * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1); - - _isFirstChar = true; - - //#ifndef GLCD_NODEFER_SCROLL - // /* - // * Make sure to clear a deferred scroll operation when repositioning - // */ - // _needScroll = 0; - //#endif -} - -__attribute__((always_inline)) -void ILI9341_due::cursorToXY(int16_t x, int16_t y) -{ - /* - * Text position is relative to current text area - */ - - _x = _xStart = _area.x + x; - _y = _yStart = _area.y + y; - _isFirstChar = true; - //Serial << F("cursorToXY x:") << x << F(" y:") << y << endl; - - //#ifndef GLCD_NODEFER_SCROLL - // /* - // * Make sure to clear a deferred scroll operation when repositioning - // */ - // _needScroll = 0; - //#endif -} - -void ILI9341_due::setTextScale(uint8_t s) { -#ifdef TEXT_SCALING_ENABLED - _textScale = (s > 0) ? s : 1; -#endif -} - - -void ILI9341_due::eraseTextLine(uint16_t color, gTextEraseLine type) -{ - /*int16_t x = _x; - int16_t y = _y; - int16_t height = getFontHeight();*/ - //uint8_t color = (_fontColor == BLACK) ? WHITE : BLACK; - - switch (type) - { - case gTextEraseToEOL: - fillRect(_x, _y, _area.x + _area.w - _x, scaledFontHeight(), color); - break; - case gTextEraseFromBOL: - fillRect(_area.x, _y, _x - _area.x, scaledFontHeight(), color); - break; - case gTextEraseFullLine: - fillRect(_area.x, _y, _area.w, scaledFontHeight(), color); - break; - } - - //cursorToXY(x, y); - } - -void ILI9341_due::eraseTextLine(uint16_t color, uint8_t row) -{ - cursorTo(0, row); - eraseTextLine(color, gTextEraseToEOL); -} - - -void ILI9341_due::setFont(gTextFont font) -{ - _font = font; -} - -void ILI9341_due::setTextColor(uint16_t color) -{ - _fontColor = color; -} - -void ILI9341_due::setTextColor(uint8_t R, uint8_t G, uint8_t B) -{ - _fontColor = color565(R, G, B); -} - -void ILI9341_due::setTextColor(uint16_t color, uint16_t backgroundColor) -{ - _fontColor = color; - _fontBgColor = backgroundColor; -} - -void ILI9341_due::setTextColor(uint8_t R, uint8_t G, uint8_t B, uint8_t bgR, uint8_t bgG, uint8_t bgB) -{ - _fontColor = color565(R, G, B); - _fontBgColor = color565(bgR, bgG, bgB); -} - -void ILI9341_due::setTextLineSpacing(uint8_t lineSpacing) -{ - _lineSpacing = lineSpacing; -} - -void ILI9341_due::setTextLetterSpacing(uint8_t letterSpacing) -{ - _letterSpacing = letterSpacing; -} - -//void ILI9341_due::setTextWrap(bool wrap) -//{ -// _wrap = wrap; -//} - -void ILI9341_due::setFontMode(gTextFontMode fontMode) -{ - if (fontMode == gTextFontModeSolid || fontMode == gTextFontModeTransparent) - _fontMode = fontMode; -} - -uint16_t ILI9341_due::getCharWidth(uint8_t c) -{ - int16_t width = 0; - - if (isFixedWidthFont(_font) { - width = (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH)) * _textScale; - } - else { - // variable width font - uint8_t firstChar = pgm_read_byte(_font + GTEXT_FONT_FIRST_CHAR); - uint8_t charCount = pgm_read_byte(_font + GTEXT_FONT_CHAR_COUNT); - - // read width data - if (c >= firstChar && c < (firstChar + charCount)) { - c -= firstChar; - width = (pgm_read_byte(_font + GTEXT_FONT_WIDTH_TABLE + c)) * _textScale; - //Serial << "strWidth of " << c << " : " << width << endl; - } - } - return width; -} - -uint16_t ILI9341_due::getStringWidth(const char* str) -{ - uint16_t width = 0; - - while (*str != 0) { - width += getCharWidth(*str++) + _letterSpacing * _textScale; - } - if (width > 0) - width -= _letterSpacing * _textScale; - return width; -} - -uint16_t ILI9341_due::getStringWidth(const __FlashStringHelper *str) -{ - PGM_P p = reinterpret_cast(str); - uint16_t width = 0; - uint8_t c; - while ((c = pgm_read_byte(p)) != 0) { - width += getCharWidth(c) + _letterSpacing * _textScale; - p++; - } - width -= _letterSpacing * _textScale; - return width; -} - -uint16_t ILI9341_due::getStringWidth(const String &str) -{ - uint16_t width = 0; - - for (uint16_t i = 0; i < str.length(); i++) - { - width += getCharWidth(str[i]) + _letterSpacing * _textScale; - } - width -= _letterSpacing * _textScale; - return width; -} - - - +/* +ILI9341_due_.cpp - Arduino Due library for interfacing with ILI9341-based TFTs + +Copyright (c) 2014 Marek Buriak + +This library is based on ILI9341_t3 library from Paul Stoffregen +(https://github.com/PaulStoffregen/ILI9341_t3), Adafruit_ILI9341 +and Adafruit_GFX libraries from Limor Fried/Ladyada +(https://github.com/adafruit/Adafruit_ILI9341). + +This file is part of the Arduino ILI9341_due library. +Sources for this library can be found at https://github.com/marekburiak/ILI9341_Due. + +ILI9341_due is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 2.1 of the License, or +(at your option) any later version. + +ILI9341_due is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with ILI9341_due. If not, see . +*/ + +/*************************************************** +This is our library for the Adafruit ILI9341 Breakout and Shield +----> http://www.adafruit.com/products/1651 + +Check out the links above for our tutorials and wiring diagrams +These displays use SPI to communicate, 4 or 5 pins are required to +interface (RST is optional) +Adafruit invests time and resources providing this open source code, +please support Adafruit and open-source hardware by purchasing +products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +MIT license, all text above must be included in any redistribution. +****************************************************/ + +#include "ILI9341_due.h" +#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED | defined(ILI_USE_SPI_TRANSACTION) +#include +#endif + +//#include "../Streaming/Streaming.h" + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wattributes" +#pragma GCC diagnostic ignored "-Wswitch" + + +static const uint8_t init_commands[] PROGMEM = { + 4, 0xEF, 0x03, 0x80, 0x02, + 4, 0xCF, 0x00, 0XC1, 0X30, + 5, 0xED, 0x64, 0x03, 0X12, 0X81, + 4, 0xE8, 0x85, 0x00, 0x78, + 6, 0xCB, 0x39, 0x2C, 0x00, 0x34, 0x02, + 2, 0xF7, 0x20, + 3, 0xEA, 0x00, 0x00, + 2, ILI9341_PWCTR1, 0x23, // Power control + 2, ILI9341_PWCTR2, 0x10, // Power control + 3, ILI9341_VMCTR1, 0x3e, 0x28, // VCM control + 2, ILI9341_VMCTR2, 0x86, // VCM control2 + 2, ILI9341_MADCTL, 0x48, // Memory Access Control + 2, ILI9341_PIXFMT, 0x55, + 3, ILI9341_FRMCTR1, 0x00, 0x18, + 4, ILI9341_DFUNCTR, 0x08, 0x82, 0x27, // Display Function Control + 2, 0xF2, 0x00, // Gamma Function Disable + 2, ILI9341_GAMMASET, 0x01, // Gamma curve selected + 16, ILI9341_GMCTRP1, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, + 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00, // Set Gamma + 16, ILI9341_GMCTRN1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, + 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F, // Set Gamma + 0 +}; + + +ILI9341_due::ILI9341_due(uint8_t cs, uint8_t dc, uint8_t rst) +{ + _cs = cs; + _dc = dc; + _rst = rst; + _spiClkDivider = ILI9341_SPI_CLKDIVIDER; + _width = ILI9341_TFTWIDTH; + _height = ILI9341_TFTHEIGHT; + _area.x = 0; + _area.y = 0; + _area.w = ILI9341_TFTWIDTH; + _area.h = ILI9341_TFTHEIGHT; + _rotation = iliRotation0; + + _arcAngleMax = DEFAULT_ARC_ANGLE_MAX; + _angleOffset = DEFAULT_ANGLE_OFFSET; + +#ifdef ILI_USE_SPI_TRANSACTION + _isInTransaction = false; +#endif + + _fontMode = gTextFontModeSolid; + _fontBgColor = ILI9341_BLACK; + _fontColor = ILI9341_WHITE; + _letterSpacing = DEFAULT_LETTER_SPACING; + _lineSpacing = DEFAULT_LINE_SPACING; +#ifdef TEXT_SCALING_ENABLED + _textScale = 1; +#endif + _isFirstChar = true; + setTextArea(0, 0, _width - 1, _height - 1); + +} + + +bool ILI9341_due::begin(void) +{ + if (pinIsChipSelect(_cs)) { + pinMode(_dc, OUTPUT); + _dcport = portOutputRegister(digitalPinToPort(_dc)); + _dcpinmask = digitalPinToBitMask(_dc); + +#if SPI_MODE_NORMAL | SPI_MODE_DMA + pinMode(_cs, OUTPUT); + _csport = portOutputRegister(digitalPinToPort(_cs)); + _cspinmask = digitalPinToBitMask(_cs); +#endif + +#if SPI_MODE_NORMAL + SPI.begin(); +#elif SPI_MODE_EXTENDED + SPI.begin(_cs); +#elif SPI_MODE_DMA + dmaBegin(); +#endif + setSPIClockDivider(ILI9341_SPI_CLKDIVIDER); + + // toggle RST low to reset + if (_rst < 255) { + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(5); + digitalWrite(_rst, LOW); + delay(20); + digitalWrite(_rst, HIGH); + delay(150); + } + + const uint8_t *addr = init_commands; + while (1) { + uint8_t count = pgm_read_byte(addr++); + if (count-- == 0) break; + writecommand_cont(pgm_read_byte(addr++)); + while (count-- > 0) { + writedata8_cont(pgm_read_byte(addr++)); + } + } + + writecommand_last(ILI9341_SLPOUT); // Exit Sleep + delay(120); + writecommand_last(ILI9341_DISPON); // Display on + delay(120); + _isInSleep = _isIdle = false; + + + + //#ifdef ILI_USE_SPI_TRANSACTION + //#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED + endTransaction(); + //#endif + //#endif + return true; + } + else { + return false; + } +} + +bool ILI9341_due::pinIsChipSelect(uint8_t cs) +{ +#if SPI_MODE_EXTENDED + if (cs == 4 || cs == 10 || cs == 52) // in Extended SPI mode only these pins are valid + { + return true; + } + else + { + Serial.print("Pin "); + Serial.print(_cs); + Serial.println(" is not a valid Chip Select pin for SPI Extended Mode. Valid pins are 4, 10, 52"); + return false; + } +#elif SPI_MODE_NORMAL | SPI_MODE_DMA + return true; +#endif +} + +void ILI9341_due::getDisplayStatus(void) +{ + beginTransaction(); + uint8_t x = readcommand8(ILI9341_RDMODE); + Serial.print(F("\nDisplay Power Mode: 0x")); Serial.println(x, HEX); + Serial.print(F(" Booster: ")); Serial.println(x & 0x80 ? F("On and working OK") : F("Off or has a fault")); + Serial.print(F(" Idle Mode: ")); Serial.println(x & 0x40 ? F("On") : F("Off")); + Serial.print(F(" Partial Mode: ")); Serial.println(x & 0x20 ? F("On") : F("Off")); + Serial.print(F(" Sleep Mode: ")); Serial.println(x & 0x10 ? F("Off") : F("On")); + Serial.print(F(" Display Normal Mode: ")); Serial.println(x & 0x08 ? F("On") : F("Off")); + Serial.print(F(" Display: ")); Serial.println(x & 0x04 ? F("On") : F("Off")); + + x = readcommand8(ILI9341_RDMADCTL); + Serial.print(F("MADCTL Mode: 0x")); Serial.println(x, HEX); + Serial.println(x & 0x80 ? F(" Bottom to Top") : F(" Top to Bottom")); + Serial.println(x & 0x40 ? F(" Right to Left") : F(" Left to Right")); + Serial.println(x & 0x20 ? F(" Normal Mode") : F(" Reverse Mode")); + Serial.println(x & 0x10 ? F(" LCD Refresh Bottom to Top") : F(" LCD Refresh Top to Bottom")); + Serial.println(x & 0x08 ? F(" BGR") : F("RGB")); + Serial.println(x & 0x04 ? F(" LCD Refresh Right to Left") : F(" LCD Refresh Left to Right")); + + x = readcommand8(ILI9341_RDPIXFMT); + Serial.print(F("Pixel Format: 0x")); Serial.println(x, HEX); + if ((x & 0x07) == 0x05) + Serial.println(F(" 16 bits/pixel")); + if ((x & 0x07) == 0x06) + Serial.println(F(" 18 bits/pixel")); + + x = readcommand8(ILI9341_RDIMGFMT); + Serial.print(F("Image Format: 0x")); Serial.println(x, HEX); + if ((x & 0x07) == 0x00) + Serial.println(F(" Gamma curve 1")); + + x = readcommand8(ILI9341_RDDSPSGNMODE); + Serial.print(F("Display Signal Mode: 0x")); Serial.println(x, HEX); + Serial.print(F(" Tearing effect line: ")); Serial.println(x & 0x80 ? F("On") : F("Off")); + Serial.print(F(" Tearing effect line: mode ")); Serial.println(x & 0x40 ? F("2") : F("1")); + Serial.print(F(" Horizontal sync: ")); Serial.println(x & 0x20 ? F("On") : F("Off")); + Serial.print(F(" Vertical sync: ")); Serial.println(x & 0x10 ? F("On") : F("Off")); + Serial.print(F(" Pixel clock: ")); Serial.println(x & 0x08 ? F("On") : F("Off")); + Serial.print(F(" Data enable: ")); Serial.println(x & 0x04 ? F("On") : F("Off")); + + x = readcommand8(ILI9341_RDSELFDIAG); + Serial.print(F("Self Diagnostic: 0x")); Serial.println(x, HEX); + Serial.print(F(" Register Loading: ")); Serial.println(x & 0x80 ? F("working") : F("not working")); + Serial.print(F(" Functionality: ")); Serial.println(x & 0x40 ? F("working") : F("not working")); + + endTransaction(); +} + +void ILI9341_due::setSPIClockDivider(uint8_t divider) +{ + _spiClkDivider = divider; +#ifdef ILI_USE_SPI_TRANSACTION +#if defined (ARDUINO_SAM_DUE) + _spiSettings = SPISettings(F_CPU / divider, MSBFIRST, SPI_MODE0); +#elif defined (ARDUINO_ARCH_AVR) +#if divider == SPI_CLOCK_DIV2 + _spiSettings = SPISettings(F_CPU / 2, MSBFIRST, SPI_MODE0); +#elif divider == SPI_CLOCK_DIV4 + _spiSettings = SPISettings(F_CPU / 4, MSBFIRST, SPI_MODE0); +#elif divider == SPI_CLOCK_DIV8 + _spiSettings = SPISettings(F_CPU / 8, MSBFIRST, SPI_MODE0); +#elif divider == SPI_CLOCK_DIV16 + _spiSettings = SPISettings(F_CPU / 16, MSBFIRST, SPI_MODE0); +#elif divider == SPI_CLOCK_DIV32 + _spiSettings = SPISettings(F_CPU / 32, MSBFIRST, SPI_MODE0); +#elif divider == SPI_CLOCK_DIV64 + _spiSettings = SPISettings(F_CPU / 64, MSBFIRST, SPI_MODE0); +#elif divider == SPI_CLOCK_DIV128 + _spiSettings = SPISettings(F_CPU / 128, MSBFIRST, SPI_MODE0); +#endif +#endif +#endif + +#ifdef ILI_USE_SPI_TRANSACTION + beginTransaction(); +#else +#if SPI_MODE_NORMAL + SPI.setClockDivider(divider); + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); +#elif SPI_MODE_EXTENDED + SPI.setClockDivider(_cs, divider); + SPI.setBitOrder(_cs, MSBFIRST); + SPI.setDataMode(_cs, SPI_MODE0); +#endif +#endif + +#if SPI_MODE_DMA + dmaInit(divider); +#endif +} + +void ILI9341_due::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) +{ + beginTransaction(); + enableCS(); + setAddrAndRW_cont(x0, y0, x1 - x0 + 1, y1 - y0 + 1); + disableCS(); + endTransaction(); +} + +void ILI9341_due::setAddrWindowRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h) +{ + beginTransaction(); + enableCS(); + setAddrAndRW_cont(x, y, w, h); + disableCS(); + endTransaction(); +} + +void ILI9341_due::pushColor(uint16_t color) +{ + beginTransaction(); + enableCS(); + setDCForData(); + write16_last(color); + endTransaction(); +} + +//void ILI9341_due::pushColors(uint16_t *colors, uint16_t offset, uint16_t len) { +// beginTransaction(); +// enableCS(); +// setDCForData(); +// colors = colors + offset * 2; +//#if SPI_MODE_EXTENDED +// uint16_t i; +// for (i = 0; i < len-1; i++) { +// write16_cont(colors[i]); +// } +// write16_last(colors[i]); +//#else +// for (uint16_t i = 0; i < (len << 1); i += 2) { +// uint16_t color = *colors; +// _scanline[i] = highByte(color); +// _scanline[i + 1] = lowByte(color); +// colors++; +// } +// writeScanline(len); +// disableCS(); +//#endif +// +// endTransaction(); +//} + +// pushes pixels stored in the colors array (one color is 2 bytes) +// in big endian (high byte first) +// len should be the length of the array (so to push 320 pixels, +// you have to have a 640-byte array and len should be 640) +//void ILI9341_due::pushColors565(uint8_t *colors, uint16_t offset, uint32_t len) { +// beginTransaction(); +// enableCS(); +// setDCForData(); +// colors = colors + offset; +// +// //#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED +// // for (uint16_t i = 0; i < len; i++) { +// // write8_cont(colors[i]); +// // } +// //#elif SPI_MODE_DMA +// write_cont(colors, len); +// //#endif +// disableCS(); +// endTransaction(); +//} + +void ILI9341_due::pushColors(const uint16_t *colors, uint16_t offset, uint32_t len) { + beginTransaction(); + enableCS(); + pushColors_noTrans_noCS(colors, offset, len); + disableCS(); + endTransaction(); +} + +void ILI9341_due::pushColors(uint16_t *colors, uint16_t offset, uint32_t len) { + beginTransaction(); + enableCS(); + setDCForData(); + colors = colors + offset; + write_cont(colors, len); + disableCS(); + endTransaction(); +} + +void ILI9341_due::pushColors_noTrans_noCS(const uint16_t *colors, uint16_t offset, uint32_t len) { + setDCForData(); + colors = colors + offset; + +#if SPI_MODE_DMA + const uint32_t numLoops = len / (uint32_t)SCANLINE_PIXEL_COUNT; + for (uint32_t l = 0; l < numLoops; l++) + { + for (uint32_t i = 0; i < SCANLINE_PIXEL_COUNT; i++) + { + _scanline16[i] = colors[l*SCANLINE_PIXEL_COUNT + i]; + } + writeScanline16(SCANLINE_PIXEL_COUNT); + } + uint16_t remainingPixels = len % SCANLINE_PIXEL_COUNT; + if (remainingPixels > 0) { + for (uint32_t i = 0; i < remainingPixels; i++) + { + _scanline16[i] = colors[numLoops*SCANLINE_PIXEL_COUNT + i]; + } + writeScanline16(remainingPixels); + } +#else + write_cont(colors, len); +#endif +} + + +void ILI9341_due::drawPixel(int16_t x, int16_t y, uint16_t color) { + beginTransaction(); + enableCS(); + drawPixel_last(x, y, color); + disableCS(); + endTransaction(); +} + +void ILI9341_due::drawImage(const uint16_t *colors, uint16_t x, uint16_t y, uint16_t w, uint16_t h) { + const uint32_t totalPixels = (uint32_t)w*(uint32_t)h; + beginTransaction(); + enableCS(); + setAddrAndRW_cont(x, y, w, h); + pushColors_noTrans_noCS(colors, 0, totalPixels); + disableCS(); + endTransaction(); +} + +void ILI9341_due::drawFastVLine(int16_t x, int16_t y, uint16_t h, uint16_t color) +{ + beginTransaction(); + drawFastVLine_noTrans(x, y, h, color); + endTransaction(); +} + +void ILI9341_due::drawFastVLine_noTrans(int16_t x, int16_t y, uint16_t h, uint16_t color) +{ + // Rudimentary clipping + if ((x >= _width) || (y >= _height)) return; + if ((y + (int16_t)h - 1) >= _height) h = _height - y; + + fillScanline16(color, min(h, SCANLINE_PIXEL_COUNT)); + + enableCS(); + setAddrAndRW_cont(x, y, 1, h); + setDCForData(); +#ifdef ARDUINO_SAM_DUE + writeScanline16(h); +#elif defined ARDUINO_ARCH_AVR + writeScanlineLooped(h); +#endif + disableCS(); +} + +void ILI9341_due::drawFastVLine_cont_noFill(int16_t x, int16_t y, int16_t h, uint16_t color) +{ + // Rudimentary clipping + // if ((x >= _width) || (y >= _height)) return; + // if ((y + h - 1) >= _height) h = _height - y; + // + // setAddrAndRW_cont(x, y, 1, h); + // setDCForData(); + //#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED + // while (h-- > 0) { + // write16_cont(color); + // } + //#elif SPI_MODE_DMA + // writeScanline(h); + //#endif + + if ((x >= _width) || (y >= _height)) return; + if ((y + h - 1) >= _height) h = _height - y; + + setAddrAndRW_cont(x, y, 1, h); + setDCForData(); +#ifdef ARDUINO_SAM_DUE + writeScanline16(h); +#elif defined ARDUINO_ARCH_AVR + writeScanlineLooped(h); +#endif + +} + +void ILI9341_due::drawFastHLine(int16_t x, int16_t y, uint16_t w, uint16_t color) +{ + beginTransaction(); + drawFastHLine_noTrans(x, y, w, color); + endTransaction(); +} + +void ILI9341_due::drawFastHLine_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t color) +{ + // Rudimentary clipping + if ((x >= _width) || (y >= _height)) return; + if ((x + (int16_t)w - 1) >= _width) w = _width - x; + + + fillScanline16(color, min(w, SCANLINE_PIXEL_COUNT)); + enableCS(); + setAddrAndRW_cont(x, y, w, 1); + setDCForData(); +#ifdef ARDUINO_SAM_DUE + writeScanline16(w); +#elif defined ARDUINO_ARCH_AVR + writeScanlineLooped(w); +#endif + disableCS(); +} + +void ILI9341_due::fillScreen(uint16_t color) +{ + const uint32_t numLoops = (uint32_t)76800 / (uint32_t)SCANLINE_PIXEL_COUNT; + fillScanline16(color); + + beginTransaction(); + enableCS(); + setAddrAndRW_cont(0, 0, _width, _height); + setDCForData(); + for (uint32_t l = 0; l < numLoops; l++) + { + writeScanline16(SCANLINE_PIXEL_COUNT); + } + disableCS(); + endTransaction(); + //#endif +} + +// fill a rectangle +void ILI9341_due::fillRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) +{ + beginTransaction(); + fillRect_noTrans(x, y, w, h, color); + endTransaction(); +} + +void ILI9341_due::fillRectWithShader(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t(*fillShader)(uint16_t rx, uint16_t ry)) +{ + beginTransaction(); + fillRectWithShader_noTrans(x, y, w, h, fillShader); + endTransaction(); +} + + +// fill a rectangle +void ILI9341_due::fillRect_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) +{ + //Serial << "x:" << x << " y:" << y << " w:" << x << " h:" << h << " width:" << _width << " height:" << _height <= _width) || (y >= _height) || (x + w - 1 < 0) || (y + h - 1 < 0)) return; + if ((x + (int16_t)w - 1) >= _width) w = _width - x; + if ((y + (int16_t)h - 1) >= _height) h = _height - y; + + const uint32_t totalPixels = (uint32_t)w*(uint32_t)h; + fillScanline16(color, min(totalPixels, SCANLINE_PIXEL_COUNT)); + enableCS(); + setAddrAndRW_cont(x, y, w, h); + setDCForData(); + writeScanlineLooped(totalPixels); + disableCS(); +} + +void ILI9341_due::fillRectWithShader_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t(*fillShader)(uint16_t rx, uint16_t ry)) +{ + //Serial << "x:" << x << " y:" << y << " w:" << x << " h:" << h << " width:" << _width << " height:" << _height <= _width) || (y >= _height) || (x + w - 1 < 0) || (y + h - 1 < 0)) return; + if ((x + (int16_t)w - 1) >= _width) w = _width - x; + if ((y + (int16_t)h - 1) >= _height) h = _height - y; + + enableCS(); + setAddrAndRW_cont(x, y, w, h); + setDCForData(); + for (uint16_t ry = 0; ry < h; ry++) { + for (uint16_t rx = 0; rx < w; rx++) + { + _scanline16[rx] = fillShader(rx, ry); + } + writeScanline16(w); + } + disableCS(); +} + +#define MADCTL_MY 0x80 +#define MADCTL_MX 0x40 +#define MADCTL_MV 0x20 +#define MADCTL_ML 0x10 +#define MADCTL_RGB 0x00 +#define MADCTL_BGR 0x08 +#define MADCTL_MH 0x04 + +void ILI9341_due::setRotation(iliRotation r) +{ + beginTransaction(); + writecommand_cont(ILI9341_MADCTL); + _rotation = r; + switch (r) { + case iliRotation0: + writedata8_last(MADCTL_MX | MADCTL_BGR); + _width = ILI9341_TFTWIDTH; + _height = ILI9341_TFTHEIGHT; + break; + case iliRotation90: + writedata8_last(MADCTL_MV | MADCTL_BGR); + _width = ILI9341_TFTHEIGHT; + _height = ILI9341_TFTWIDTH; + break; + case iliRotation180: + writedata8_last(MADCTL_MY | MADCTL_BGR); + _width = ILI9341_TFTWIDTH; + _height = ILI9341_TFTHEIGHT; + break; + case iliRotation270: + writedata8_last(MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); + _width = ILI9341_TFTHEIGHT; + _height = ILI9341_TFTWIDTH; + break; + } + //_area.x = 0; + //_area.y = 0; + _area.w = _width; + _area.h = _height; + endTransaction(); +} + + +void ILI9341_due::invertDisplay(boolean i) +{ + beginTransaction(); + writecommand_last(i ? ILI9341_INVON : ILI9341_INVOFF); + endTransaction(); +} + + +// Reads one pixel/color from the TFT's GRAM +uint16_t ILI9341_due::readPixel(int16_t x, int16_t y) +{ + beginTransaction(); + //setAddr_cont(x, y, x + 1, y + 1); ? should it not be x,y,x,y? + setAddr_cont(x, y, 1, 1); + writecommand_cont(ILI9341_RAMRD); // read from RAM + readdata8_cont(); // dummy read + uint8_t red = read8_cont(); + uint8_t green = read8_cont(); + uint8_t blue = read8_last(); + uint16_t color = color565(red, green, blue); + endTransaction(); + return color; + +} + +//void ILI9341_due::drawArc(uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, uint16_t start, uint16_t end, uint16_t color) { +// //void graphics_draw_arc(GContext *ctx, GPoint p, int radius, int thickness, int start, int end) { +// start = start % 360; +// end = end % 360; +// +// while (start < 0) start += 360; +// while (end < 0) end += 360; +// +// if (end == 0) end = 360; +// +// //Serial << "start: " << start << " end:" << end << endl; +// +// // Serial << (float)cos_lookup(start * ARC_MAX_STEPS / 360) << " x " << (float)sin_lookup(start * ARC_MAX_STEPS / 360) << endl; +// +// float sslope = (float)cos_lookup(start * ARC_MAX_STEPS / 360) / (float)sin_lookup(start * ARC_MAX_STEPS / 360); +// float eslope = (float)cos_lookup(end * ARC_MAX_STEPS / 360) / (float)sin_lookup(end * ARC_MAX_STEPS / 360); +// +// //Serial << "sslope: " << sslope << " eslope:" << eslope << endl; +// +// if (end == 360) eslope = -1000000; +// +// int ir2 = (radius - thickness) * (radius - thickness); +// int or2 = radius * radius; +// +// for (int x = -radius; x <= radius; x++) +// for (int y = -radius; y <= radius; y++) +// { +// int x2 = x * x; +// int y2 = y * y; +// +// if ( +// (x2 + y2 < or2 && x2 + y2 >= ir2) && +// ( +// (y > 0 && start < 180 && x <= y * sslope) || +// (y < 0 && start > 180 && x >= y * sslope) || +// (y < 0 && start <= 180) || +// (y == 0 && start <= 180 && x < 0) || +// (y == 0 && start == 0 && x > 0) +// ) && +// ( +// (y > 0 && end < 180 && x >= y * eslope) || +// (y < 0 && end > 180 && x <= y * eslope) || +// (y > 0 && end >= 180) || +// (y == 0 && end >= 180 && x < 0) || +// (y == 0 && start == 0 && x > 0) +// ) +// ) +// drawPixel_cont(cx+x, cy+y, color); +// } +//} + + +// DrawArc function thanks to Jnmattern and his Arc_2.0 (https://github.com/Jnmattern) +void ILI9341_due::fillArcOffsetted(uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float start, float end, uint16_t color) { + int16_t xmin = 65535, xmax = -32767, ymin = 32767, ymax = -32767; + float cosStart, sinStart, cosEnd, sinEnd; + float r, t; + float startAngle, endAngle; + + //Serial << "start: " << start << " end: " << end << endl; + startAngle = (start / _arcAngleMax) * 360; // 252 + endAngle = (end / _arcAngleMax) * 360; // 807 + //Serial << "startAngle: " << startAngle << " endAngle: " << endAngle << endl; + + while (startAngle < 0) startAngle += 360; + while (endAngle < 0) endAngle += 360; + while (startAngle > 360) startAngle -= 360; + while (endAngle > 360) endAngle -= 360; + //Serial << "startAngleAdj: " << startAngle << " endAngleAdj: " << endAngle << endl; + //if (endAngle == 0) endAngle = 360; + + if (startAngle > endAngle) { + fillArcOffsetted(cx, cy, radius, thickness, ((startAngle) / (float)360) * _arcAngleMax, _arcAngleMax, color); + fillArcOffsetted(cx, cy, radius, thickness, 0, ((endAngle) / (float)360) * _arcAngleMax, color); + } + else { + // Calculate bounding box for the arc to be drawn + cosStart = cosDegrees(startAngle); + sinStart = sinDegrees(startAngle); + cosEnd = cosDegrees(endAngle); + sinEnd = sinDegrees(endAngle); + + //Serial << cosStart << " " << sinStart << " " << cosEnd << " " << sinEnd << endl; + + r = radius; + // Point 1: radius & startAngle + t = r * cosStart; + if (t < xmin) xmin = t; + if (t > xmax) xmax = t; + t = r * sinStart; + if (t < ymin) ymin = t; + if (t > ymax) ymax = t; + + // Point 2: radius & endAngle + t = r * cosEnd; + if (t < xmin) xmin = t; + if (t > xmax) xmax = t; + t = r * sinEnd; + if (t < ymin) ymin = t; + if (t > ymax) ymax = t; + + r = radius - thickness; + // Point 3: radius-thickness & startAngle + t = r * cosStart; + if (t < xmin) xmin = t; + if (t > xmax) xmax = t; + t = r * sinStart; + if (t < ymin) ymin = t; + if (t > ymax) ymax = t; + + // Point 4: radius-thickness & endAngle + t = r * cosEnd; + if (t < xmin) xmin = t; + if (t > xmax) xmax = t; + t = r * sinEnd; + if (t < ymin) ymin = t; + if (t > ymax) ymax = t; + + + //Serial << xmin << " " << xmax << " " << ymin << " " << ymax << endl; + // Corrections if arc crosses X or Y axis + if ((startAngle < 90) && (endAngle > 90)) { + ymax = radius; + } + + if ((startAngle < 180) && (endAngle > 180)) { + xmin = -radius; + } + + if ((startAngle < 270) && (endAngle > 270)) { + ymin = -radius; + } + + // Slopes for the two sides of the arc + float sslope = (float)cosStart / (float)sinStart; + float eslope = (float)cosEnd / (float)sinEnd; + + //Serial << "sslope2: " << sslope << " eslope2:" << eslope << endl; + + if (endAngle == 360) eslope = -1000000; + + int ir2 = (radius - thickness) * (radius - thickness); + int or2 = radius * radius; + //Serial << "ymin: " << ymin << " ymax: " << ymax << endl; + + fillScanline16(color); + + enableCS(); + for (int x = xmin; x <= xmax; x++) { + bool y1StartFound = false, y2StartFound = false; + bool y1EndFound = false, y2EndSearching = false; + int y1s = 0, y1e = 0, y2s = 0; + for (int y = ymin; y <= ymax; y++) + { + int x2 = x * x; + int y2 = y * y; + + if ( + (x2 + y2 < or2 && x2 + y2 >= ir2) && ( + (y > 0 && startAngle < 180 && x <= y * sslope) || + (y < 0 && startAngle > 180 && x >= y * sslope) || + (y < 0 && startAngle <= 180) || + (y == 0 && startAngle <= 180 && x < 0) || + (y == 0 && startAngle == 0 && x > 0) + ) && ( + (y > 0 && endAngle < 180 && x >= y * eslope) || + (y < 0 && endAngle > 180 && x <= y * eslope) || + (y > 0 && endAngle >= 180) || + (y == 0 && endAngle >= 180 && x < 0) || + (y == 0 && startAngle == 0 && x > 0))) + { + if (!y1StartFound) //start of the higher line found + { + y1StartFound = true; + y1s = y; + } + else if (y1EndFound && !y2StartFound) //start of the lower line found + { + //Serial << "Found y2 start x: " << x << " y:" << y << endl; + y2StartFound = true; + //drawPixel_cont(cx+x, cy+y, ILI9341_BLUE); + y2s = y; + y += y1e - y1s - 1; // calculate the most probable end of the lower line (in most cases the length of lower line is equal to length of upper line), in the next loop we will validate if the end of line is really there + if (y > ymax - 1) // the most probable end of line 2 is beyond ymax so line 2 must be shorter, thus continue with pixel by pixel search + { + y = y2s; // reset y and continue with pixel by pixel search + y2EndSearching = true; + } + + //Serial << "Upper line length: " << (y1e - y1s) << " Setting y to " << y << endl; + } + else if (y2StartFound && !y2EndSearching) + { + // we validated that the probable end of the lower line has a pixel, continue with pixel by pixel search, in most cases next loop with confirm the end of lower line as it will not find a valid pixel + y2EndSearching = true; + } + //Serial << "x:" << x << " y:" << y << endl; + //drawPixel_cont(cx+x, cy+y, ILI9341_BLUE); + } + else + { + if (y1StartFound && !y1EndFound) //higher line end found + { + y1EndFound = true; + y1e = y - 1; + //Serial << "line: " << y1s << " - " << y1e << endl; + drawFastVLine_cont_noFill(cx + x, cy + y1s, y - y1s, color); + if (y < 0) + { + //Serial << x << " " << y << endl; + y = abs(y); // skip the empty middle + } + else + break; + } + else if (y2StartFound) + { + if (y2EndSearching) + { + //Serial << "Found final end at y: " << y << endl; + // we found the end of the lower line after pixel by pixel search + drawFastVLine_cont_noFill(cx + x, cy + y2s, y - y2s, color); + y2EndSearching = false; + break; + } + else + { + //Serial << "Expected end not found" << endl; + // the expected end of the lower line is not there so the lower line must be shorter + y = y2s; // put the y back to the lower line start and go pixel by pixel to find the end + y2EndSearching = true; + } + } + //else + //drawPixel_cont(cx+x, cy+y, ILI9341_RED); + } + // + + //delay(75); + } + if (y1StartFound && !y1EndFound) + { + y1e = ymax; + //Serial << "line: " << y1s << " - " << y1e << endl; + drawFastVLine_cont_noFill(cx + x, cy + y1s, y1e - y1s + 1, color); + } + else if (y2StartFound && y2EndSearching) // we found start of lower line but we are still searching for the end + { // which we haven't found in the loop so the last pixel in a column must be the end + drawFastVLine_cont_noFill(cx + x, cy + y2s, ymax - y2s + 1, color); + } + } + disableCS(); + } +} + +void ILI9341_due::screenshotToConsole() +{ + uint8_t lastColor[3]; + uint8_t color[3]; + uint32_t sameColorPixelCount = 0; + uint16_t sameColorPixelCount16 = 0; + uint32_t sameColorStartIndex = 0; + uint32_t totalImageDataLength = 0; + Serial.println(); + Serial.println(F("==== PIXEL DATA START ====")); + //uint16_t x=0; + //uint16_t y=0; + beginTransaction(); + setAddr_cont(0, 0, _width, _height); + writecommand_cont(ILI9341_RAMRD); // read from RAM + readdata8_cont(); // dummy read, also sets DC high + +#if SPI_MODE_DMA + read_cont(color, 3); + lastColor[0] = color[0]; + lastColor[1] = color[1]; + lastColor[2] = color[2]; +#elif SPI_MODE_NORMAL | SPI_MODE_EXTENDED + lastColor[0] = color[0] = read8_cont(); + lastColor[1] = color[1] = read8_cont(); + lastColor[2] = color[2] = read8_cont(); +#endif + printHex8(color, 3); //write color of the first pixel + totalImageDataLength += 6; + sameColorStartIndex = 0; + + for (uint32_t i = 1; i < (uint32_t)_width*(uint32_t)_height; i++) + { +#if SPI_MODE_DMA + read_cont(color, 3); +#elif SPI_MODE_NORMAL | SPI_MODE_EXTENDED + color[0] = read8_cont(); + color[1] = read8_cont(); + color[2] = read8_cont(); +#endif + + if (color[0] != lastColor[0] || + color[1] != lastColor[1] || + color[2] != lastColor[2]) + { + sameColorPixelCount = i - sameColorStartIndex; + if (sameColorPixelCount > 65535) + { + sameColorPixelCount16 = 65535; + printHex16(&sameColorPixelCount16, 1); + printHex8(lastColor, 3); + totalImageDataLength += 10; + sameColorPixelCount16 = sameColorPixelCount - 65535; + } + else + sameColorPixelCount16 = sameColorPixelCount; + printHex16(&sameColorPixelCount16, 1); + printHex8(color, 3); + totalImageDataLength += 10; + + sameColorStartIndex = i; + lastColor[0] = color[0]; + lastColor[1] = color[1]; + lastColor[2] = color[2]; + } +} + disableCS(); + endTransaction(); + sameColorPixelCount = (uint32_t)_width*(uint32_t)_height - sameColorStartIndex; + if (sameColorPixelCount > 65535) + { + sameColorPixelCount16 = 65535; + printHex16(&sameColorPixelCount16, 1); + printHex8(lastColor, 3); + totalImageDataLength += 10; + sameColorPixelCount16 = sameColorPixelCount - 65535; + } + else + sameColorPixelCount16 = sameColorPixelCount; + printHex16(&sameColorPixelCount16, 1); + totalImageDataLength += 4; + printHex32(&totalImageDataLength, 1); + + Serial.println(); + Serial.println(F("==== PIXEL DATA END ====")); + Serial.print(F("Total Image Data Length: ")); + Serial.println(totalImageDataLength); +} + +/* +This is the core graphics library for all our displays, providing a common +set of graphics primitives (points, lines, circles, etc.). It needs to bex +paired with a hardware-specific library for each display device we carry +(to handle the lower-level functions). + +Adafruit invests time and resources providing this open source code, please +support Adafruit & open-source hardware by purchasing products from Adafruit! + +Copyright (c) 2013 Adafruit Industries. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ + +// Draw a circle outline +void ILI9341_due::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) +{ + + int16_t f = 1 - r; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * r; + int16_t x = 0; + int16_t y = r; + beginTransaction(); + enableCS(); + + drawPixel_cont(x0, y0 + r, color); + drawPixel_cont(x0, y0 - r, color); + drawPixel_cont(x0 + r, y0, color); + drawPixel_cont(x0 - r, y0, color); + + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + drawPixel_cont(x0 + x, y0 + y, color); + drawPixel_cont(x0 - x, y0 + y, color); + drawPixel_cont(x0 + x, y0 - y, color); + drawPixel_cont(x0 - x, y0 - y, color); + drawPixel_cont(x0 + y, y0 + x, color); + drawPixel_cont(x0 - y, y0 + x, color); + drawPixel_cont(x0 + y, y0 - x, color); + drawPixel_cont(x0 - y, y0 - x, color); + } + disableCS(); + endTransaction(); +} + + +void ILI9341_due::drawCircleHelper(int16_t x0, int16_t y0, + int16_t r, uint8_t cornername, uint16_t color) +{ + int16_t f = 1 - r; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * r; + int16_t x = 0; + int16_t y = r; + enableCS(); + while (x < y) { + if (f >= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + if (cornername & 0x4) { + drawPixel_cont(x0 + x, y0 + y, color); + drawPixel_cont(x0 + y, y0 + x, color); + } + if (cornername & 0x2) { + drawPixel_cont(x0 + x, y0 - y, color); + drawPixel_cont(x0 + y, y0 - x, color); + } + if (cornername & 0x8) { + drawPixel_cont(x0 - y, y0 + x, color); + drawPixel_cont(x0 - x, y0 + y, color); + } + if (cornername & 0x1) { + drawPixel_cont(x0 - y, y0 - x, color); + drawPixel_cont(x0 - x, y0 - y, color); + } + } + disableCS(); +} + +void ILI9341_due::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) +{ + beginTransaction(); + drawFastVLine_noTrans(x0, y0 - r, 2 * r + 1, color); + fillCircleHelper(x0, y0, r, 3, 0, color); + endTransaction(); +} + +// Used to do circles and roundrects +// Further optimizations by Chris_CT +void ILI9341_due::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, + uint8_t cornername, int16_t delta, uint16_t color) +{ + int16_t f = 1 - r; + int16_t ddF_x = 1; + int16_t ddF_y = -2 * r; + int16_t x = 0; + int16_t y = r; + int16_t ylm = x0 - r; // **added** + +#ifdef ARDUINO_SAM_DUE + fillScanline16(color, 2 * max(x, y) + 1 + delta); +#else + fillScanline16(color); +#endif + + enableCS(); + while (x < y) { + if (f >= 0) { + if (cornername & 0x1) drawFastVLine_cont_noFill(x0 + y, y0 - x, 2 * x + 1 + delta, color); // **moved** + if (cornername & 0x2) drawFastVLine_cont_noFill(x0 - y, y0 - x, 2 * x + 1 + delta, color); // **moved** + ylm = x0 - y; // **added** + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + if ((x0 - x) > ylm) { // **added** + if (cornername & 0x1) drawFastVLine_cont_noFill(x0 + x, y0 - y, 2 * y + 1 + delta, color); + if (cornername & 0x2) drawFastVLine_cont_noFill(x0 - x, y0 - y, 2 * y + 1 + delta, color); + } // **added** +} + disableCS(); +} + +void ILI9341_due::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) +{ + beginTransaction(); + drawLine_noTrans(x0, y0, x1, y1, color); + endTransaction(); +} + +void ILI9341_due::drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t length, uint16_t color) +{ + beginTransaction(); + drawLine_noTrans( + x, + y, + x + length*cosDegrees(angle + _angleOffset), + y + length*sinDegrees(angle + _angleOffset), color); + endTransaction(); +} + + +void ILI9341_due::drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t start, uint16_t length, uint16_t color) +{ + beginTransaction(); + drawLine_noTrans( + x + start*cosDegrees(angle + _angleOffset), + y + start*sinDegrees(angle + _angleOffset), + x + (start + length)*cosDegrees(angle + _angleOffset), + y + (start + length)*sinDegrees(angle + _angleOffset), color); + endTransaction(); +} + +// Bresenham's algorithm - thx wikipedia +void ILI9341_due::drawLine_noTrans(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color) +{ + beginTransaction(); + if (y0 == y1) { + if (x1 > x0) { + drawFastHLine_noTrans(x0, y0, x1 - x0 + 1, color); + } + else if (x1 < x0) { + drawFastHLine_noTrans(x1, y0, x0 - x1 + 1, color); + } + else { + drawPixel_last(x0, y0, color); + } + return; + } + else if (x0 == x1) { + if (y1 > y0) { + drawFastVLine_noTrans(x0, y0, y1 - y0 + 1, color); + } + else { + drawFastVLine_noTrans(x0, y1, y0 - y1 + 1, color); + } + return; + } + + bool steep = abs(y1 - y0) > abs(x1 - x0); + if (steep) { + swap(x0, y0); + swap(x1, y1); + } + if (x0 > x1) { + swap(x0, x1); + swap(y0, y1); + } + + int16_t dx, dy; + dx = x1 - x0; + dy = abs(y1 - y0); + + int16_t err = dx >> 1; + int16_t ystep; + + if (y0 < y1) { + ystep = 1; + } + else { + ystep = -1; + } + + int16_t xbegin = x0; + + fillScanline16(color); + + enableCS(); + if (steep) { + for (; x0 <= x1; x0++) { + err -= dy; + if (err < 0) { + int16_t len = x0 - xbegin; + if (len) { +#ifdef ARDUINO_SAM_DUE + writeVLine_cont_noCS_noFill(y0, xbegin, len + 1); +#elif defined ARDUINO_ARCH_AVR + writeVLine_cont_noCS_noScanline(y0, xbegin, len + 1, color); +#endif + } + else { + writePixel_cont(y0, x0, color); + } + xbegin = x0 + 1; + y0 += ystep; + err += dx; + } + } + if (x0 > xbegin + 1) { +#ifdef ARDUINO_SAM_DUE + writeVLine_cont_noCS_noFill(y0, xbegin, x0 - xbegin); +#elif defined ARDUINO_ARCH_AVR + writeVLine_cont_noCS_noScanline(y0, xbegin, x0 - xbegin, color); +#endif + } + + } + else { + for (; x0 <= x1; x0++) { + err -= dy; + if (err < 0) { + int16_t len = x0 - xbegin; + if (len) { +#ifdef ARDUINO_SAM_DUE + writeHLine_cont_noCS_noFill(xbegin, y0, len + 1); +#elif defined ARDUINO_ARCH_AVR + writeHLine_cont_noCS_noScanline(xbegin, y0, len + 1, color); +#endif + } + else { + writePixel_cont(x0, y0, color); + } + xbegin = x0 + 1; + y0 += ystep; + err += dx; + } + } + if (x0 > xbegin + 1) { +#ifdef ARDUINO_SAM_DUE + writeHLine_cont_noCS_noFill(xbegin, y0, x0 - xbegin); +#elif defined ARDUINO_ARCH_AVR + writeHLine_cont_noCS_noScanline(xbegin, y0, x0 - xbegin, color); +#endif + } + } + disableCS(); + endTransaction(); +} + + +// Draw a rectangle +//void ILI9341_due::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) +//{ +// writeHLine_cont(x, y, w, color); +// writeHLine_cont(x, y+h-1, w, color); +// writeVLine_cont(x, y, h, color); +// writeVLine_last(x+w-1, y, h, color); +//} + +void ILI9341_due::drawRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) +{ + beginTransaction(); + + fillScanline16(color, min(SCANLINE_PIXEL_COUNT, max(w, h))); + + enableCS(); + writeHLine_cont_noCS_noFill(x, y, w); + writeHLine_cont_noCS_noFill(x, y + h - 1, w); + writeVLine_cont_noCS_noFill(x, y, h); + writeVLine_cont_noCS_noFill(x + w - 1, y, h); + disableCS(); + endTransaction(); +} + +// Draw a rounded rectangle +void ILI9341_due::drawRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color) +{ + beginTransaction(); + + fillScanline16(color, min(SCANLINE_PIXEL_COUNT, max(w, h))); + + enableCS(); + // smarter version + writeHLine_cont_noCS_noFill(x + r, y, w - 2 * r); // Top + writeHLine_cont_noCS_noFill(x + r, y + h - 1, w - 2 * r); // Bottom + writeVLine_cont_noCS_noFill(x, y + r, h - 2 * r); // Left + writeVLine_cont_noCS_noFill(x + w - 1, y + r, h - 2 * r); // Right + disableCS(); + // draw four corners + drawCircleHelper(x + r, y + r, r, 1, color); + drawCircleHelper(x + w - r - 1, y + r, r, 2, color); + drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color); + drawCircleHelper(x + r, y + h - r - 1, r, 8, color); + endTransaction(); +} + +// Fill a rounded rectangle +void ILI9341_due::fillRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t r, uint16_t color) +{ + beginTransaction(); + // smarter version + fillRect_noTrans(x + r, y, w - 2 * r, h, color); + + // draw four corners + fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); + fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color); + endTransaction(); +} + +// Draw a triangle +void ILI9341_due::drawTriangle(int16_t x0, int16_t y0, + int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) +{ + beginTransaction(); + drawLine_noTrans(x0, y0, x1, y1, color); + drawLine_noTrans(x1, y1, x2, y2, color); + drawLine_noTrans(x2, y2, x0, y0, color); + endTransaction(); +} + +// Fill a triangle +void ILI9341_due::fillTriangle(int16_t x0, int16_t y0, + int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color) +{ + beginTransaction(); + int16_t a, b, y, last; + + // Sort coordinates by Y order (y2 >= y1 >= y0) + if (y0 > y1) { + swap(y0, y1); swap(x0, x1); + } + if (y1 > y2) { + swap(y2, y1); swap(x2, x1); + } + if (y0 > y1) { + swap(y0, y1); swap(x0, x1); + } + + if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing + a = b = x0; + if (x1 < a) a = x1; + else if (x1 > b) b = x1; + if (x2 < a) a = x2; + else if (x2 > b) b = x2; + drawFastHLine_noTrans(a, y0, b - a + 1, color); + endTransaction(); + return; + } + + int16_t + dx01 = x1 - x0, + dy01 = y1 - y0, + dx02 = x2 - x0, + dy02 = y2 - y0, + dx12 = x2 - x1, + dy12 = y2 - y1, + sa = 0, + sb = 0; + + // For upper part of triangle, find scanline crossings for segments + // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 + // is included here (and second loop will be skipped, avoiding a /0 + // error there), otherwise scanline y1 is skipped here and handled + // in the second loop...which also avoids a /0 error here if y0=y1 + // (flat-topped triangle). + if (y1 == y2) last = y1; // Include y1 scanline + else last = y1 - 1; // Skip it + + fillScanline16(color, min(SCANLINE_PIXEL_COUNT, max(x0, max(x1, x2)) - min(x0, min(x1, x2)))); // fill scanline with the widest scanline that'll be used + + enableCS(); + for (y = y0; y <= last; y++) { + a = x0 + sa / dy01; + b = x0 + sb / dy02; + sa += dx01; + sb += dx02; + /* longhand: + a = x0 + (x1 - x0) * (y - y0) / (y1 - y0); + b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); + */ + if (a > b) swap(a, b); + writeHLine_cont_noCS_noFill(a, y, b - a + 1); + } + + // For lower part of triangle, find scanline crossings for segments + // 0-2 and 1-2. This loop is skipped if y1=y2. + sa = dx12 * (y - y1); + sb = dx02 * (y - y0); + for (; y <= y2; y++) { + a = x1 + sa / dy12; + b = x0 + sb / dy02; + sa += dx12; + sb += dx02; + /* longhand: + a = x1 + (x2 - x1) * (y - y1) / (y2 - y1); + b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); + */ + if (a > b) swap(a, b); + writeHLine_cont_noCS_noFill(a, y, b - a + 1); + } + disableCS(); + endTransaction(); +} + +// draws monochrome (single color) bitmaps +void ILI9341_due::drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color) +{ + uint16_t i, j, byteWidth = (w + 7) / 8; + + beginTransaction(); + enableCS(); + for (j = 0; j < h; j++) + { + for (i = 0; i < w; i++) + { + if (pgm_read_byte(bitmap + j * byteWidth + i / 8) & (128 >> (i & 7))) { + drawPixel_cont(x + i, y + j, color); + } + } + } + disableCS(); + endTransaction(); +} + +// draws monochrome (single color) bitmaps +void ILI9341_due::drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color, uint16_t bgcolor) +{ + uint16_t i, j, byteWidth = (w + 7) / 8; + + beginTransaction(); + enableCS(); + for (j = 0; j < h; j++) + { + for (i = 0; i < w; i++) + { + if (pgm_read_byte(bitmap + j * byteWidth + i / 8) & (128 >> (i & 7))) { +#if defined ARDUINO_ARCH_AVR + drawPixel_cont(x + i, y + j, color); +#elif defined ARDUINO_SAM_DUE + _scanline16[i] = color; +#endif + } + else + { +#if defined ARDUINO_ARCH_AVR + drawPixel_cont(x + i, y + j, bgcolor); +#elif defined ARDUINO_SAM_DUE + _scanline16[i] = bgcolor; +#endif + } + } +#ifdef ARDUINO_SAM_DUE + setAddrAndRW_cont(x, y + j, w, 1); + setDCForData(); + writeScanline16(w); +#endif + } + disableCS(); + endTransaction(); +} + +uint8_t ILI9341_due::getRotation(void) { + return _rotation; +} + +// if true, tft will be blank (white), +// display's frame buffer is unaffected +// (you can write to it without showing content on the screen) +void ILI9341_due::display(boolean d) { + beginTransaction(); + writecommand_last(d ? ILI9341_DISPON : ILI9341_DISPOFF); + endTransaction(); +} + +// puts display in/out of sleep mode +void ILI9341_due::sleep(boolean s) +{ + beginTransaction(); + writecommand_last(s ? ILI9341_SLPIN : ILI9341_SLPOUT); + endTransaction(); + delay(120); +} + +void ILI9341_due::idle(boolean i) { + beginTransaction(); + writecommand_last(i ? ILI9341_IDMON : ILI9341_IDMOFF); + endTransaction(); +} + + +void ILI9341_due::setPowerLevel(pwrLevel p) +{ + switch (p) + { + case pwrLevelNormal: + if (_isIdle) { idle(false); _isIdle = false; } + if (_isInSleep) { sleep(false); _isInSleep = false; } + break; + case pwrLevelIdle: + if (!_isIdle) { idle(true); _isIdle = true; } + if (_isInSleep) { sleep(false); _isInSleep = false; } + break; + case pwrLevelSleep: + if (!_isInSleep) { sleep(true); _isInSleep = true; } + if (_isIdle) { idle(false); _isIdle = false; } + break; + } +} + + +void ILI9341_due::setArcParams(float arcAngleMax) +{ + _arcAngleMax = arcAngleMax; +} + +void ILI9341_due::setAngleOffset(int16_t angleOffset) +{ + _angleOffset = DEFAULT_ANGLE_OFFSET + angleOffset; +} + +//uint8_t ILI9341_due::spiread(void) { +// uint8_t r = 0; +// +// //SPI.setClockDivider(_cs, 12); // 8-ish MHz (full! speed!) +// //SPI.setBitOrder(_cs, MSBFIRST); +// //SPI.setDataMode(_cs, SPI_MODE0); +// r = SPI.transfer(_cs, 0x00); +// Serial.print("read: 0x"); Serial.print(r, HEX); +// +// return r; +//} +// +//void ILI9341_due::spiwrite(uint8_t c) { +// +// //Serial.print("0x"); Serial.print(c, HEX); Serial.print(", "); +// +// +// //SPI.setClockDivider(_cs, 12); // 8-ish MHz (full! speed!) +// //SPI.setBitOrder(_cs, MSBFIRST); +// //SPI.setDataMode(_cs, SPI_MODE0); +// SPI.transfer(_cs, c); +// +//} + +//void ILI9341_due::writecommand(uint8_t c) { +// //*dcport &= ~dcpinmask; +// digitalWrite(_dc, LOW); +// //*clkport &= ~clkpinmask; // clkport is a NULL pointer when hwSPI==true +// //digitalWrite(_sclk, LOW); +// //*csport &= ~cspinmask; +// //digitalWrite(_cs, LOW); +// +// spiwrite(c); +// +// //*csport |= cspinmask; +// //digitalWrite(_cs, HIGH); +//} +// +// +//void ILI9341_due::writedata(uint8_t c) { +// //*dcport |= dcpinmask; +// digitalWrite(_dc, HIGH); +// //*clkport &= ~clkpinmask; // clkport is a NULL pointer when hwSPI==true +// //digitalWrite(_sclk, LOW); +// //*csport &= ~cspinmask; +// //digitalWrite(_cs, LOW); +// +// spiwrite(c); +// +// //digitalWrite(_cs, HIGH); +// //*csport |= cspinmask; +//} + +void ILI9341_due::printHex8(uint8_t *data, uint8_t length) // prints 8-bit data in hex +{ + char tmp[length * 2 + 1]; + byte first; + byte second; + for (int i = 0; i < length; i++) { + first = (data[i] >> 4) & 0x0f; + second = data[i] & 0x0f; + // base for converting single digit numbers to ASCII is 48 + // base for 10-16 to become upper-case characters A-F is 55 + // note: difference is 7 + tmp[i * 2] = first + 48; + tmp[i * 2 + 1] = second + 48; + if (first > 9) tmp[i * 2] += 7; + if (second > 9) tmp[i * 2 + 1] += 7; + } + tmp[length * 2] = 0; + Serial.print(tmp); +} + + +void ILI9341_due::printHex16(uint16_t *data, uint8_t length) // prints 8-bit data in hex +{ + char tmp[length * 4 + 1]; + byte first; + byte second; + byte third; + byte fourth; + for (int i = 0; i < length; i++) { + first = (data[i] >> 12) & 0x0f; + second = (data[i] >> 8) & 0x0f; + third = (data[i] >> 4) & 0x0f; + fourth = data[i] & 0x0f; + //Serial << first << " " << second << " " << third << " " << fourth << endl; + // base for converting single digit numbers to ASCII is 48 + // base for 10-16 to become upper-case characters A-F is 55 + // note: difference is 7 + tmp[i * 4] = first + 48; + tmp[i * 4 + 1] = second + 48; + tmp[i * 4 + 2] = third + 48; + tmp[i * 4 + 3] = fourth + 48; + //tmp[i*5+4] = 32; // add trailing space + if (first > 9) tmp[i * 4] += 7; + if (second > 9) tmp[i * 4 + 1] += 7; + if (third > 9) tmp[i * 4 + 2] += 7; + if (fourth > 9) tmp[i * 4 + 3] += 7; + } + tmp[length * 4] = 0; + Serial.print(tmp); +} + +void ILI9341_due::printHex32(uint32_t *data, uint8_t length) // prints 8-bit data in hex +{ + char tmp[length * 8 + 1]; + byte dataByte[8]; + for (int i = 0; i < length; i++) { + dataByte[0] = (data[i] >> 28) & 0x0f; + dataByte[1] = (data[i] >> 24) & 0x0f; + dataByte[2] = (data[i] >> 20) & 0x0f; + dataByte[3] = (data[i] >> 16) & 0x0f; + dataByte[4] = (data[i] >> 12) & 0x0f; + dataByte[5] = (data[i] >> 8) & 0x0f; + dataByte[6] = (data[i] >> 4) & 0x0f; + dataByte[7] = data[i] & 0x0f; + //Serial << first << " " << second << " " << third << " " << fourth << endl; + // base for converting single digit numbers to ASCII is 48 + // base for 10-16 to become upper-case characters A-F is 55 + // note: difference is 7 + tmp[i * 4] = dataByte[0] + 48; + tmp[i * 4 + 1] = dataByte[1] + 48; + tmp[i * 4 + 2] = dataByte[2] + 48; + tmp[i * 4 + 3] = dataByte[3] + 48; + tmp[i * 4 + 4] = dataByte[4] + 48; + tmp[i * 4 + 5] = dataByte[5] + 48; + tmp[i * 4 + 6] = dataByte[6] + 48; + tmp[i * 4 + 7] = dataByte[7] + 48; + //tmp[i*5+4] = 32; // add trailing space + if (dataByte[0] > 9) tmp[i * 4] += 7; + if (dataByte[1] > 9) tmp[i * 4 + 1] += 7; + if (dataByte[2] > 9) tmp[i * 4 + 2] += 7; + if (dataByte[3] > 9) tmp[i * 4 + 3] += 7; + if (dataByte[4] > 9) tmp[i * 4 + 4] += 7; + if (dataByte[5] > 9) tmp[i * 4 + 5] += 7; + if (dataByte[6] > 9) tmp[i * 4 + 6] += 7; + if (dataByte[7] > 9) tmp[i * 4 + 7] += 7; + } + tmp[length * 8] = 0; + Serial.print(tmp); +} + + + +void ILI9341_due::clearTextArea() +{ + fillRect(_area.x, _area.y, _area.w, _area.h, _fontBgColor); +} + +void ILI9341_due::clearTextArea(uint16_t color) +{ + fillRect(_area.x, _area.y, _area.w, _area.h, color); +} + +void ILI9341_due::clearTextArea(gTextArea area) +{ + fillRect(area.x, area.y, area.w, area.h, _fontBgColor); +} + +void ILI9341_due::clearTextArea(gTextArea area, uint16_t color) +{ + fillRect(area.x, area.y, area.w, area.h, color); +} + +void ILI9341_due::setTextArea(gTextArea area) //, textMode mode) +{ + _area.x = area.x; + _area.y = area.y; + _area.w = area.w; + _area.h = area.h; + _x = _xStart = area.x; + _y = _yStart = area.y; +} + +//void ILI9341_due::setTextArea(int16_t x0, int16_t y0, int16_t x1, int16_t y1) //, textMode mode) +//{ +// _area.x = x0; +// _area.y = y0; +// _area.x1 = x1; +// _area.y1 = y1; +// _x = x0; +// _y = y0; +//} + +void ILI9341_due::setTextArea(int16_t x, int16_t y, int16_t columns, int16_t rows, gTextFont font) //, textMode mode) +{ + //textMode mode = DEFAULT_SCROLLDIR; + uint16_t x1, y1; + + setFont(font); + + x1 = x + columns * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1) - 1; + y1 = y + rows * (getFontHeight() + 1) - 1; + + setTextArea(x, y, x1, y1); //, mode); +} + +void ILI9341_due::setTextArea(int16_t x, int16_t y, int16_t w, int16_t h) //, textMode mode) +{ + _area.x = x; + _area.y = y; + _area.w = w; + _area.h = h; + _x = _xStart = x; + _y = _xStart = y; +} + +__attribute__((always_inline)) +void ILI9341_due::specialChar(uint8_t c) +{ + + + if (c == '\n') + { + uint8_t height = getFontHeight(); + + /* + * Erase all pixels remaining to edge of text area.on all wraps + * It looks better when using inverted (WHITE) text, on proportional fonts, and + * doing WHITE scroll fills. + * + */ + + + /*if (_fontMode == gTextFontModeSolid && _x < _area.x1) + fillRect(_x, _y, _area.x1 - _x, height, _fontBgColor);*/ + //glcd_Device::SetPixels(_x, _y, _area.x1, _y+height, _fontColor == BLACK ? WHITE : BLACK); + + // /* + // * Check for scroll up vs scroll down (scrollup is normal) + // */ + //#ifndef GLCD_NO_SCROLLDOWN + // if (_area.mode == SCROLL_UP) + //#endif + // { + // + // /* + // * Normal/up scroll + // */ + // + // /* + // * Note this comparison and the pixel calcuation below takes into + // * consideration that fonts + // * are atually 1 pixel taller when rendered. + // * This extra pixel is along the bottom for a "gap" between the character below. + // */ + // if (_y + 2 * height >= _area.y1) + // { + //#ifndef GLCD_NODEFER_SCROLL + // if (!_needScroll) + // { + // _needScroll = 1; + // return; + // } + //#endif + // + // /* + // * formula for pixels to scroll is: + // * (assumes "height" is one less than rendered height) + // * + // * pixels = height - ((_area.y1 - _y) - height) +1; + // * + // * The forumala below is unchanged + // * But has been re-written/simplified in hopes of better code + // * + // */ + // + // uint8_t pixels = 2 * height + _y - _area.y1 + 1; + // + // /* + // * Scroll everything to make room + // * * NOTE: (FIXME, slight "bug") + // * When less than the full character height of pixels is scrolled, + // * There can be an issue with the newly created empty line. + // * This is because only the # of pixels scrolled will be colored. + // * What it means is that if the area starts off as white and the text + // * color is also white, the newly created empty text line after a scroll + // * operation will not be colored BLACK for the full height of the character. + // * The only way to fix this would be alter the code use a "move pixels" + // * rather than a scroll pixels, and then do a clear to end line immediately + // * after the move and wrap. + // * + // * Currently this only shows up when + // * there are are less than 2xheight pixels below the current Y coordinate to + // * the bottom of the text area + // * and the current background of the pixels below the current text line + // * matches the text color + // * and a wrap was just completed. + // * + // * After a full row of text is printed, the issue will resolve itself. + // * + // * + // */ + // //ScrollUp(_area.x, _area.y, _area.x1, _area.y1, pixels, _fontBgColor); + // + // _x = _area.x; + // _y = _area.y1 - height; + // } + // else + // { + /* + * Room for simple wrap + */ + + _x = _xStart; // _area.x; + _y = _y + (height + _lineSpacing)*_textScale; + _isFirstChar = true; + + // } + // } + //#ifndef GLCD_NO_SCROLLDOWN + // else + // { + // /* + // * Reverse/Down scroll + // */ + // + // /* + // * Check for Wrap vs scroll. + // * + // * Note this comparison and the pixel calcuation below takes into + // * consideration that fonts + // * are atually 1 pixel taller when rendered. + // * + // */ + // if (_y > _area.y + height) + // { + // /* + // * There is room so just do a simple wrap + // */ + // _x = _area.x; + // _y = _y - (height + 1); + // } + // else + // { + //#ifndef GLCD_NODEFER_SCROLL + // if (!_needScroll) + // { + // _needScroll = 1; + // return; + // } + //#endif + // + // /* + // * Scroll down everything to make room for new line + // * (assumes "height" is one less than rendered height) + // */ + // + // uint8_t pixels = height + 1 - (_area.y - _y); + // + // //ScrollDown(_area.x, _area.y, _area.x1, _area.y1, pixels, _fontBgColor); + // + // _x = _area.x; + // _y = _area.y; + // } + // } + //#endif + } + else if (c == '\r') { + _isFirstChar = true; + } + +} + +size_t ILI9341_due::write(uint8_t c) +{ + //Serial << c << endl2; + if (_font == 0) + { + Serial.println(F("No font selected")); + return 0; // no font selected + } + + /* + * check for special character processing + */ + + if (c < 0x20) + { + specialChar(c); + return 1; + } + uint16_t charWidth = 0; + uint16_t charHeight = getFontHeight(); + uint8_t charHeightInBytes = (charHeight + 7) / 8; /* calculates height in rounded up bytes */ + + uint8_t firstChar = pgm_read_byte(_font + GTEXT_FONT_FIRST_CHAR); + uint8_t charCount = pgm_read_byte(_font + GTEXT_FONT_CHAR_COUNT); + + uint16_t index = 0; + + if (c < firstChar || c >= (firstChar + charCount)) { + return 0; // invalid char + } + c -= firstChar; + + if (isFixedWidthFont(_font) { + //thielefont = 0; + charWidth = pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH); + index = c*charHeightInBytes*charWidth + GTEXT_FONT_WIDTH_TABLE; + } + else { + // variable width font, read width data, to get the index + //thielefont = 1; + /* + * Because there is no table for the offset of where the data + * for each character glyph starts, run the table and add up all the + * widths of all the characters prior to the character we + * need to locate. + */ + for (uint8_t i = 0; i < c; i++) { + index += pgm_read_byte(_font + GTEXT_FONT_WIDTH_TABLE + i); + } + /* + * Calculate the offset of where the font data + * for our character starts. + * The index value from above has to be adjusted because + * there is potentially more than 1 byte per column in the glyph, + * when the characgter is taller than 8 bits. + * To account for this, index has to be multiplied + * by the height in bytes because there is one byte of font + * data for each vertical 8 pixels. + * The index is then adjusted to skip over the font width data + * and the font header information. + */ + + index = index*charHeightInBytes + charCount + GTEXT_FONT_WIDTH_TABLE; + + /* + * Finally, fetch the width of our character + */ + charWidth = pgm_read_byte(_font + GTEXT_FONT_WIDTH_TABLE + c); + } + + //#ifndef GLCD_NODEFER_SCROLL + // /* + // * check for a deferred scroll + // * If there is a deferred scroll, + // * Fake a newline to complete it. + // */ + // + // if (_needScroll) + // { + // write('\n'); // fake a newline to cause wrap/scroll + // _needScroll = 0; + // } + //#endif + + /* + * If the character won't fit in the text area, + * fake a newline to get the text area to wrap and + * scroll if necessary. + * NOTE/WARNING: the below calculation assumes a 1 pixel pad. + * This will need to be changed if/when configurable pixel padding is supported. + */ + // if (_wrap && _x + charWidth > _area.x1) + // { + // write('\n'); // fake a newline to cause wrap/scroll + //#ifndef GLCD_NODEFER_SCROLL + // /* + // * We can't defer a scroll at this point since we need to output + // * a character right now. + // */ + // if (_needScroll) + // { + // write('\n'); // fake a newline to cause wrap/scroll + // _needScroll = 0; + // } + //#endif + // } + beginTransaction(); + if (_fontMode == gTextFontModeSolid) + drawSolidChar(c, index, charWidth, charHeight); + else if (_fontMode == gTextFontModeTransparent) + drawTransparentChar(c, index, charWidth, charHeight); + endTransaction(); + + return 1; // valid char +} + +void ILI9341_due::drawSolidChar(char c, uint16_t index, uint16_t charWidth, uint16_t charHeight) +{ + uint8_t bitId = 0; + uint16_t py; +#ifdef ARDUINO_SAM_DUE + uint16_t lineId = 0; +#endif + uint16_t charHeightInBytes = (charHeight + 7) / 8; /* calculates height in rounded up bytes */ + + uint8_t numRenderBits = 8; + const uint8_t numRemainingBits = charHeight % 8 == 0 ? 8 : charHeight % 8; + uint16_t numPixelsInOnePoint = 1; + if (_textScale > 1) + numPixelsInOnePoint = (uint16_t)_textScale *(uint16_t)_textScale; +#ifdef ARDUINO_ARCH_AVR + uint16_t pixelsInOnePointToDraw; +#endif + + if (_letterSpacing > 0 && !_isFirstChar) + { +#ifdef LINE_SPACING_AS_PART_OF_LETTERS + fillRect(_x, _y, _letterSpacing * _textScale, (charHeight + _lineSpacing)*_textScale, _fontBgColor); +#else + fillRect(_x, _y, _letterSpacing * _textScale, charHeight *_textScale, _fontBgColor); +#endif + _x += _letterSpacing * _textScale; + } + _isFirstChar = false; + +#ifdef LINE_SPACING_AS_PART_OF_LETTERS + if (_lineSpacing > 0) { + fillRect(_x, _y + charHeight*_textScale, charWidth * _textScale, _lineSpacing *_textScale, _fontBgColor); + } +#endif + + //#if SPI_MODE_DMA + // if (_textScale > 1) + // fillScanline16(_fontColor, numPixelsInOnePoint); //pre-fill the scanline, we will be drawing different lengths of it + //#endif + + enableCS(); + if (_textScale == 1) + setRowAddr(_y, charHeight); + + for (uint16_t j = 0; j < charWidth; j++) /* each column */ + { + //Serial << "Printing row" << endl; +#ifdef ARDUINO_SAM_DUE + lineId = 0; +#endif + numRenderBits = 8; + if (_x >= 0 && _x < _width) + { + setColumnAddr(_x, _textScale); + + if (_textScale == 1) + { + //setAddrAndRW_cont(_x, _y, 1, charHeight); + setRW(); + setDCForData(); + } + + for (uint16_t i = 0; i < charHeightInBytes; i++) /* each vertical byte */ + { + uint16_t page = i*charWidth; // page must be 16 bit to prevent overflow + uint8_t data = pgm_read_byte(_font + index + page + j); + + /* + * This funkyness is because when the character glyph is not a + * multiple of 8 in height, the residual bits in the font data + * were aligned to the incorrect end of the byte with respect + * to the GLCD. I believe that this was an initial oversight (bug) + * in Thieles font creator program. It is easily fixed + * in the font program but then creates a potential backward + * compatibility problem. + * --- bperrybap + */ + if (charHeight > 8 && charHeight < (i + 1) * 8) /* is it last byte of multibyte tall font? */ + { + data >>= ((i + 1) << 3) - charHeight; // (i+1)*8 + } + //Serial << "data:" <>= 1; + } + + //#ifdef ARDUINO_ARCH_AVR + //if (_textScale == 1 && (lineId == SCANLINE_PIXEL_COUNT - 1 || i == charHeightInBytes - 1)) // we have either filled the buffer or are rendering the bottom portion of the char + //{ + // writeScanline16(numRenderBits); // max 8 + // lineId = 0; + //} + //#endif + + //delay(50); + } + } + //Serial << endl; +#ifdef ARDUINO_SAM_DUE + if (_textScale == 1) + { + writeScanline16(charHeight); + } +#endif + _x += _textScale; + + } + disableCS(); // to put CS line back up + + //_x = cx; + + //Serial << " ending at " << _x << " lastChar " << _lastChar < 0 && !_isFirstChar) + { + _x += _letterSpacing * _textScale; + } + _isFirstChar = false; + + + fillScanline16(_fontColor); //pre-fill the scanline, we will be drawing different lengths of it + + + uint16_t charHeightInBytes = (charHeight + 7) / 8; /* calculates height in rounded up bytes */ + + uint8_t numRenderBits = 8; + const uint8_t numRemainingBits = charHeight % 8 == 0 ? 8 : charHeight % 8; + + enableCS(); + + for (uint8_t j = 0; j < charWidth; j++) /* each column */ + { + //Serial << "Printing row" << endl; + numRenderBits = 8; + + if (_x >= 0 && _x < _width) + { + setColumnAddr(_x, _textScale); + + for (uint16_t i = 0; i < charHeightInBytes; i++) /* each vertical byte */ + { + uint16_t page = i*charWidth; // page must be 16 bit to prevent overflow + uint8_t data = pgm_read_byte(_font + index + page + j); + + /* + * This funkyness is because when the character glyph is not a + * multiple of 8 in height, the residual bits in the font data + * were aligned to the incorrect end of the byte with respect + * to the GLCD. I believe that this was an initial oversight (bug) + * in Thieles font creator program. It is easily fixed + * in the font program but then creates a potential backward + * compatibility problem. + * --- bperrybap + */ + if (charHeight > 8 && charHeight < (i + 1) * 8) /* is it last byte of multibyte tall font? */ + { + data >>= ((i + 1) << 3) - charHeight; // (i+1)*8 + } + //Serial << "data:" <>= 1; + } + + if (lineEnd == (charHeight - 1) * _textScale) // we have a line that goes all the way to the bottom + { + const uint32_t totalPixels = uint32_t(lineEnd - lineStart + _textScale)*(uint32_t)_textScale; + //setRowAddr(_y + lineStart, _y + lineEnd + _textScale - 1); + setRowAddr(_y + lineStart, lineEnd - lineStart + _textScale); + setRW(); + setDCForData(); + writeScanlineLooped(totalPixels); + + ////fillRect(cx, cy + lineStart, _textScale, lineEnd - lineStart + _textScale, ILI9341_BLUEVIOLET); + //setAddrAndRW_cont(_x, _y + lineStart, _textScale, lineEnd - lineStart + _textScale); + //setDCForData(); + + //for (uint8_t s = 0; s < _textScale; s++) + //{ + // writeScanline16(lineEnd - lineStart + _textScale); + // //delay(25); + //} + } + } + } + //Serial << endl; + _x += _textScale; + } + disableCS(); // to put CS line back up + + //_x = cx; +} + +size_t ILI9341_due::print(char c) { + _isFirstChar = true; + beginTransaction(); + write(c); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(unsigned char c, int b) { + _isFirstChar = true; + beginTransaction(); + Print::print(c, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(int d, int b) { + _isFirstChar = true; + beginTransaction(); + Print::print(d, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(unsigned int u, int b) { + _isFirstChar = true; + beginTransaction(); + Print::print(u, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(long l, int b) { + _isFirstChar = true; + beginTransaction(); + Print::print(l, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(unsigned long ul, int b) { + _isFirstChar = true; + beginTransaction(); + Print::print(ul, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(double d, int b) { + _isFirstChar = true; + beginTransaction(); + Print::print(d, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::print(const Printable& str) { + _isFirstChar = true; + beginTransaction(); + Print::print(str); + endTransaction(); + return 0; +} + +size_t ILI9341_due::println(const __FlashStringHelper *str) { + _isFirstChar = true; + beginTransaction(); + Print::println(str); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(const String &str) { + _isFirstChar = true; + beginTransaction(); + Print::println(str); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(const char* str) { + _isFirstChar = true; + beginTransaction(); + Print::println(str); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(char c) { + _isFirstChar = true; + beginTransaction(); + Print::println(c); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(unsigned char c, int b) { + _isFirstChar = true; + beginTransaction(); + Print::println(c, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(int d, int b) { + _isFirstChar = true; + beginTransaction(); + Print::println(d, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(unsigned int u, int b) { + _isFirstChar = true; + beginTransaction(); + Print::println(u, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(long l, int b) { + _isFirstChar = true; + beginTransaction(); + Print::println(l, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(unsigned long ul, int b) { + _isFirstChar = true; + beginTransaction(); + Print::println(ul, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(double d, int b) { + _isFirstChar = true; + beginTransaction(); + Print::println(d, b); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(const Printable& str) { + _isFirstChar = true; + beginTransaction(); + Print::println(str); + endTransaction(); + return 0; +} +size_t ILI9341_due::println(void) { + _isFirstChar = true; + beginTransaction(); + Print::println(); + endTransaction(); + return 0; +} + +size_t ILI9341_due::print(const char *str) +{ + beginTransaction(); + _isFirstChar = true; + while (*str) + { + write((uint8_t)*str); + //_isFirstChar = false; + str++; + } + endTransaction(); + return 0; +} + +size_t ILI9341_due::print(const String &str) +{ + beginTransaction(); + _isFirstChar = true; + for (uint16_t i = 0; i < str.length(); i++) + { + write(str[i]); + //_isFirstChar = false; + } + endTransaction(); + return 0; +} + +size_t ILI9341_due::print(const __FlashStringHelper *str) +{ + beginTransaction(); + _isFirstChar = true; + PGM_P p = reinterpret_cast(str); + uint8_t c; + while ((c = pgm_read_byte(p)) != 0) { + write(c); + //_isFirstChar = false; + p++; + } + endTransaction(); + return 0; +} + +void ILI9341_due::printAt(const char *str, int16_t x, int16_t y) +{ + cursorToXY(x, y); + print(str); +} + +void ILI9341_due::printAt(const String &str, int16_t x, int16_t y) +{ + cursorToXY(x, y); + print(str); +} + +void ILI9341_due::printAt(const __FlashStringHelper *str, int16_t x, int16_t y) +{ + cursorToXY(x, y); + print(str); +} + +void ILI9341_due::printAt(const char *str, int16_t x, int16_t y, gTextEraseLine eraseLine) +{ + cursorToXY(x, y); + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + clearPixelsOnLeft(1024); + print(str); + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + clearPixelsOnRight(1024); +} + +void ILI9341_due::printAt(const String &str, int16_t x, int16_t y, gTextEraseLine eraseLine) +{ + cursorToXY(x, y); + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + clearPixelsOnLeft(1024); + print(str); + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + clearPixelsOnRight(1024); +} + +void ILI9341_due::printAt(const __FlashStringHelper *str, int16_t x, int16_t y, gTextEraseLine eraseLine) +{ + cursorToXY(x, y); + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + clearPixelsOnLeft(1024); + print(str); + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + clearPixelsOnRight(1024); +} + +void ILI9341_due::printAt(const char *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + cursorToXY(x, y); + + // CLEAR PIXELS ON THE LEFT + if (pixelsClearedOnLeft > 0) + clearPixelsOnLeft(pixelsClearedOnLeft); + + print(str); + + // CLEAR PIXELS ON THE RIGHT + if (pixelsClearedOnRight > 0) + clearPixelsOnRight(pixelsClearedOnRight); +} + +void ILI9341_due::printAt(const String &str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + cursorToXY(x, y); + + // CLEAR PIXELS ON THE LEFT + if (pixelsClearedOnLeft > 0) + clearPixelsOnLeft(pixelsClearedOnLeft); + + print(str); + + // CLEAR PIXELS ON THE RIGHT + if (pixelsClearedOnRight > 0) + clearPixelsOnRight(pixelsClearedOnRight); +} + +void ILI9341_due::printAt(const __FlashStringHelper *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + cursorToXY(x, y); + + // CLEAR PIXELS ON THE LEFT + if (pixelsClearedOnLeft > 0) + clearPixelsOnLeft(pixelsClearedOnLeft); + + print(str); + + // CLEAR PIXELS ON THE RIGHT + if (pixelsClearedOnRight > 0) + clearPixelsOnRight(pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAligned(const char *str, gTextAlign align) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, 0, 0); +} + +__attribute__((always_inline)) +void ILI9341_due::printAligned(const String &str, gTextAlign align) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, 0, 0); +} + +__attribute__((always_inline)) +void ILI9341_due::printAligned(const __FlashStringHelper *str, gTextAlign align) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, 0, 0); +} + +void ILI9341_due::printAligned(const char *str, gTextAlign align, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAligned(const String &str, gTextAlign align, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAligned(const __FlashStringHelper *str, gTextAlign align, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAligned(const char *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAligned(const String &str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAligned(const __FlashStringHelper *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, 0, 0); +} + +__attribute__((always_inline)) +void ILI9341_due::printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, 0, 0); +} + +__attribute__((always_inline)) +void ILI9341_due::printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, 0, 0); +} + +void ILI9341_due::printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, gTextPivotDefault, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAtPivoted(const char *str, int16_t x, int16_t y, gTextPivot pivot) +{ + cursorToXY(x, y); + + if (pivot != gTextPivotTopLeft && pivot != gTextPivotDefault) + applyPivot(str, pivot, gTextAlignTopLeft); + + print(str); +} + +void ILI9341_due::printAtPivoted(const String &str, int16_t x, int16_t y, gTextPivot pivot) +{ + cursorToXY(x, y); + + if (pivot != gTextPivotTopLeft && pivot != gTextPivotDefault) + applyPivot(str, pivot, gTextAlignTopLeft); + + print(str); +} + +void ILI9341_due::printAtPivoted(const __FlashStringHelper *str, int16_t x, int16_t y, gTextPivot pivot) +{ + cursorToXY(x, y); + + if (pivot != gTextPivotTopLeft && pivot != gTextPivotDefault) + applyPivot(str, pivot, gTextAlignTopLeft); + + print(str); +} + +void ILI9341_due::printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot) +{ + printAlignedPivotedOffseted(str, align, pivot, 0, 0, 0, 0); +} + +void ILI9341_due::printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot) +{ + printAlignedPivotedOffseted(str, align, pivot, 0, 0, 0, 0); +} + +void ILI9341_due::printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot) +{ + printAlignedPivotedOffseted(str, align, pivot, 0, 0, 0, 0); +} + +void ILI9341_due::printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + printAlignedPivotedOffseted(str, align, pivot, 0, 0, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) +{ + printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, 0, 0); +} + +void ILI9341_due::printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) +{ + printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, 0, 0); +} + +void ILI9341_due::printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) +{ + printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, 0, 0); +} + +void ILI9341_due::printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine) +{ + uint16_t pixelsClearedOnLeft = 0; + uint16_t pixelsClearedOnRight = 0; + if (eraseLine == gTextEraseFromBOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnLeft = 1024; + if (eraseLine == gTextEraseToEOL || eraseLine == gTextEraseFullLine) + pixelsClearedOnRight = 1024; + printAlignedPivotedOffseted(str, align, pivot, offsetX, offsetY, pixelsClearedOnLeft, pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + //Serial << pixelsClearedOnLeft << " " << pixelsClearedOnRight << endl; + _x = _xStart = _area.x; + _y = _yStart = _area.y; + + applyAlignPivotOffset(str, align, pivot, offsetX, offsetY); + + clearPixelsOnLeft(pixelsClearedOnLeft); + print(str); + clearPixelsOnRight(pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + //Serial << pixelsClearedOnLeft << " " << pixelsClearedOnRight << endl; + _x = _xStart = _area.x; + _y = _yStart = _area.y; + + applyAlignPivotOffset(str, align, pivot, offsetX, offsetY); + + clearPixelsOnLeft(pixelsClearedOnLeft); + print(str); + clearPixelsOnRight(pixelsClearedOnRight); +} + +void ILI9341_due::printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight) +{ + //Serial << pixelsClearedOnLeft << " " << pixelsClearedOnRight << endl; + _x = _xStart = _area.x; + _y = _yStart = _area.y; + + applyAlignPivotOffset(str, align, pivot, offsetX, offsetY); + + clearPixelsOnLeft(pixelsClearedOnLeft); + print(str); + clearPixelsOnRight(pixelsClearedOnRight); +} + +__attribute__((always_inline)) +void ILI9341_due::clearPixelsOnLeft(uint16_t pixelsToClearOnLeft) { + // CLEAR PIXELS ON THE LEFT + if (pixelsToClearOnLeft > 0) + { + int16_t clearX1 = max(min((int16_t)_x, (int16_t)_area.x), (int16_t)_x - (int16_t)pixelsToClearOnLeft); + //Serial.println(clearX1); + //Serial << "clearPixelsOnLeft " << _x << " " << _area.x << " " << clearX1 << endl2; + fillRect(clearX1, _y, _x - clearX1, scaledFontHeight(), _fontBgColor); + } +} + +__attribute__((always_inline)) +void ILI9341_due::clearPixelsOnRight(uint16_t pixelsToClearOnRight) { + // CLEAR PIXELS ON THE RIGHT + if (pixelsToClearOnRight > 0) + { + int16_t clearX2 = min(max((int16_t)_x, (int16_t)_area.x + (int16_t)_area.w - 1), (int16_t)_x + (int16_t)pixelsToClearOnRight); + //Serial << "area from " << _area.x << " to " << _area.x1 << endl; + //Serial << "clearing on right from " << _x << " to " << clearX2 << endl; + fillRect(_x, _y, clearX2 - _x + 1, scaledFontHeight(), _fontBgColor); + //TOTRY + //fillRect(_x, _y, clearX2 - _x + 1, getFontHeight(), _fontBgColor); + } +} + +void ILI9341_due::applyAlignPivotOffset(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) { + //PIVOT + if (pivot != gTextPivotTopLeft) + applyPivot(str, pivot, align); + + // ALIGN & OFFSET + applyAlignOffset(align, offsetX, offsetY); +} + +void ILI9341_due::applyAlignPivotOffset(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) { + //PIVOT + if (pivot != gTextPivotTopLeft) + applyPivot(str, pivot, align); + + // ALIGN & OFFSET + applyAlignOffset(align, offsetX, offsetY); +} + +void ILI9341_due::applyAlignPivotOffset(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY) { + //PIVOT + if (pivot != gTextPivotTopLeft) + applyPivot(str, pivot, align); + + // ALIGN & OFFSET + applyAlignOffset(align, offsetX, offsetY); +} + +void ILI9341_due::applyAlignOffset(gTextAlign align, int16_t offsetX, int16_t offsetY) +{ + if (align != gTextAlignTopLeft) + { + switch (align) + { + case gTextAlignTopCenter: + { + _x += _area.w / 2; + break; + } + case gTextAlignTopRight: + { + _x += _area.w; + break; + } + case gTextAlignMiddleLeft: + { + _y += _area.h / 2; + break; + } + case gTextAlignMiddleCenter: + { + _x += _area.w / 2; + _y += _area.h / 2; + break; + } + case gTextAlignMiddleRight: + { + _x += _area.w; + _y += _area.h / 2; + break; + } + case gTextAlignBottomLeft: + { + _y += _area.h; + break; + } + case gTextAlignBottomCenter: + { + _x += _area.w / 2; + _y += _area.h; + break; + } + case gTextAlignBottomRight: + { + _x += _area.w; + _y += _area.h; + break; + } + } + } + // OFFSET + _x += offsetX; + _y += offsetY; +} + +void ILI9341_due::applyPivot(const String &str, gTextPivot pivot, gTextAlign align) +{ + applyPivot(str.c_str(), pivot, align); +} + +void ILI9341_due::applyPivot(const __FlashStringHelper *str, gTextPivot pivot, gTextAlign align) +{ + //PIVOT + if (pivot == gTextPivotDefault) + { + switch (align) + { + case gTextAlignTopLeft: { pivot = gTextPivotTopLeft; break; } + case gTextAlignTopCenter: { pivot = gTextPivotTopCenter; break; } + case gTextAlignTopRight: { pivot = gTextPivotTopRight; break; } + case gTextAlignMiddleLeft: { pivot = gTextPivotMiddleLeft; break; } + case gTextAlignMiddleCenter: { pivot = gTextPivotMiddleCenter; break; } + case gTextAlignMiddleRight: { pivot = gTextPivotMiddleRight; break; } + case gTextAlignBottomLeft: { pivot = gTextPivotBottomLeft; break; } + case gTextAlignBottomCenter: { pivot = gTextPivotBottomCenter; break; } + case gTextAlignBottomRight: { pivot = gTextPivotBottomRight; break; } + } + } + + if (pivot != gTextPivotTopLeft) + { + switch (pivot) + { + case gTextPivotTopCenter: + { + _x -= getStringWidth(str) / 2; + break; + } + case gTextPivotTopRight: + { + _x -= getStringWidth(str); + break; + } + case gTextPivotMiddleLeft: + { + _y -= scaledFontHeight() / 2; + break; + } + case gTextPivotMiddleCenter: + { + _x -= getStringWidth(str) / 2; + _y -= scaledFontHeight() / 2; + break; + } + case gTextPivotMiddleRight: + { + _x -= getStringWidth(str); + _y -= scaledFontHeight() / 2; + break; + } + case gTextPivotBottomLeft: + { + _y -= scaledFontHeight(); + break; + } + case gTextPivotBottomCenter: + { + _x -= getStringWidth(str) / 2; + _y -= scaledFontHeight(); + break; + } + case gTextPivotBottomRight: + { + _x -= getStringWidth(str); + _y -= scaledFontHeight(); + break; + } + } + } +} + +void ILI9341_due::applyPivot(const char *str, gTextPivot pivot, gTextAlign align) +{ + //PIVOT + if (pivot == gTextPivotDefault) + { + switch (align) + { + case gTextAlignTopLeft: { pivot = gTextPivotTopLeft; break; } + case gTextAlignTopCenter: { pivot = gTextPivotTopCenter; break; } + case gTextAlignTopRight: { pivot = gTextPivotTopRight; break; } + case gTextAlignMiddleLeft: { pivot = gTextPivotMiddleLeft; break; } + case gTextAlignMiddleCenter: { pivot = gTextPivotMiddleCenter; break; } + case gTextAlignMiddleRight: { pivot = gTextPivotMiddleRight; break; } + case gTextAlignBottomLeft: { pivot = gTextPivotBottomLeft; break; } + case gTextAlignBottomCenter: { pivot = gTextPivotBottomCenter; break; } + case gTextAlignBottomRight: { pivot = gTextPivotBottomRight; break; } + } + } + + if (pivot != gTextPivotTopLeft) + { + switch (pivot) + { + case gTextPivotTopCenter: + { + _x -= getStringWidth(str) / 2; + break; + } + case gTextPivotTopRight: + { + _x -= getStringWidth(str); + break; + } + case gTextPivotMiddleLeft: + { + _y -= scaledFontHeight() / 2; + break; + } + case gTextPivotMiddleCenter: + { + _x -= getStringWidth(str) / 2; + _y -= scaledFontHeight() / 2; + break; + } + case gTextPivotMiddleRight: + { + _x -= getStringWidth(str); + _y -= scaledFontHeight() / 2; + break; + } + case gTextPivotBottomLeft: + { + _y -= scaledFontHeight(); + break; + } + case gTextPivotBottomCenter: + { + _x -= getStringWidth(str) / 2; + _y -= scaledFontHeight(); + break; + } + case gTextPivotBottomRight: + { + _x -= getStringWidth(str); + _y -= scaledFontHeight(); + break; + } + } + } +} + +void ILI9341_due::cursorTo(uint8_t column, uint8_t row) +{ + if (_font == 0) + return; // no font selected + + /* + * Text position is relative to current text area + */ + + _x = _xStart = _area.x + column * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1); + _y = _yStart = _area.y + row * (getFontHeight() + _lineSpacing) * _textScale; + _isFirstChar = true; + //#ifndef GLCD_NODEFER_SCROLL + // /* + // * Make sure to clear a deferred scroll operation when repositioning + // */ + // _needScroll = 0; + //#endif +} + +void ILI9341_due::cursorTo(int8_t column) +{ + if (_font == 0) + return; // no font selected + /* + * Text position is relative to current text area + * negative value moves the cursor backwards + */ + if (column >= 0) + _x = _xStart = column * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1) + _area.x; + else + _x -= column * (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH) + 1); + + _isFirstChar = true; + + //#ifndef GLCD_NODEFER_SCROLL + // /* + // * Make sure to clear a deferred scroll operation when repositioning + // */ + // _needScroll = 0; + //#endif +} + +__attribute__((always_inline)) +void ILI9341_due::cursorToXY(int16_t x, int16_t y) +{ + /* + * Text position is relative to current text area + */ + + _x = _xStart = _area.x + x; + _y = _yStart = _area.y + y; + _isFirstChar = true; + //Serial << F("cursorToXY x:") << x << F(" y:") << y << endl; + + //#ifndef GLCD_NODEFER_SCROLL + // /* + // * Make sure to clear a deferred scroll operation when repositioning + // */ + // _needScroll = 0; + //#endif +} + +void ILI9341_due::setTextScale(uint8_t s) { +#ifdef TEXT_SCALING_ENABLED + _textScale = (s > 0) ? s : 1; +#endif +} + + +void ILI9341_due::eraseTextLine(uint16_t color, gTextEraseLine type) +{ + /*int16_t x = _x; + int16_t y = _y; + int16_t height = getFontHeight();*/ + //uint8_t color = (_fontColor == BLACK) ? WHITE : BLACK; + + switch (type) + { + case gTextEraseToEOL: + fillRect(_x, _y, _area.x + _area.w - _x, scaledFontHeight(), color); + break; + case gTextEraseFromBOL: + fillRect(_area.x, _y, _x - _area.x, scaledFontHeight(), color); + break; + case gTextEraseFullLine: + fillRect(_area.x, _y, _area.w, scaledFontHeight(), color); + break; + } + + //cursorToXY(x, y); + } + +void ILI9341_due::eraseTextLine(uint16_t color, uint8_t row) +{ + cursorTo(0, row); + eraseTextLine(color, gTextEraseToEOL); +} + + +void ILI9341_due::setFont(gTextFont font) +{ + _font = font; +} + +void ILI9341_due::setTextColor(uint16_t color) +{ + _fontColor = color; +} + +void ILI9341_due::setTextColor(uint8_t R, uint8_t G, uint8_t B) +{ + _fontColor = color565(R, G, B); +} + +void ILI9341_due::setTextColor(uint16_t color, uint16_t backgroundColor) +{ + _fontColor = color; + _fontBgColor = backgroundColor; +} + +void ILI9341_due::setTextColor(uint8_t R, uint8_t G, uint8_t B, uint8_t bgR, uint8_t bgG, uint8_t bgB) +{ + _fontColor = color565(R, G, B); + _fontBgColor = color565(bgR, bgG, bgB); +} + +void ILI9341_due::setTextLineSpacing(uint8_t lineSpacing) +{ + _lineSpacing = lineSpacing; +} + +void ILI9341_due::setTextLetterSpacing(uint8_t letterSpacing) +{ + _letterSpacing = letterSpacing; +} + +//void ILI9341_due::setTextWrap(bool wrap) +//{ +// _wrap = wrap; +//} + +void ILI9341_due::setFontMode(gTextFontMode fontMode) +{ + if (fontMode == gTextFontModeSolid || fontMode == gTextFontModeTransparent) + _fontMode = fontMode; +} + +uint16_t ILI9341_due::getCharWidth(uint8_t c) +{ + int16_t width = 0; + + if (isFixedWidthFont(_font) { + width = (pgm_read_byte(_font + GTEXT_FONT_FIXED_WIDTH)) * _textScale; + } + else { + // variable width font + uint8_t firstChar = pgm_read_byte(_font + GTEXT_FONT_FIRST_CHAR); + uint8_t charCount = pgm_read_byte(_font + GTEXT_FONT_CHAR_COUNT); + + // read width data + if (c >= firstChar && c < (firstChar + charCount)) { + c -= firstChar; + width = (pgm_read_byte(_font + GTEXT_FONT_WIDTH_TABLE + c)) * _textScale; + //Serial << "strWidth of " << c << " : " << width << endl; + } + } + return width; +} + +uint16_t ILI9341_due::getStringWidth(const char* str) +{ + uint16_t width = 0; + + while (*str != 0) { + width += getCharWidth(*str++) + _letterSpacing * _textScale; + } + if (width > 0) + width -= _letterSpacing * _textScale; + return width; +} + +uint16_t ILI9341_due::getStringWidth(const __FlashStringHelper *str) +{ + PGM_P p = reinterpret_cast(str); + uint16_t width = 0; + uint8_t c; + while ((c = pgm_read_byte(p)) != 0) { + width += getCharWidth(c) + _letterSpacing * _textScale; + p++; + } + width -= _letterSpacing * _textScale; + return width; +} + +uint16_t ILI9341_due::getStringWidth(const String &str) +{ + uint16_t width = 0; + + for (uint16_t i = 0; i < str.length(); i++) + { + width += getCharWidth(str[i]) + _letterSpacing * _textScale; + } + width -= _letterSpacing * _textScale; + return width; +} + + + #pragma GCC diagnostic pop \ No newline at end of file diff --git a/lib/ILI9341_due/ILI9341_due.h b/lib/ILI9341_due/ILI9341_due.h index 0588fcd..987e36b 100644 --- a/lib/ILI9341_due/ILI9341_due.h +++ b/lib/ILI9341_due/ILI9341_due.h @@ -1,2368 +1,2368 @@ -/* -v1.01.008 - -ILI9341_due.h - Arduino Due library for interfacing with ILI9341-based TFTs - -Code: https://github.com/marekburiak/ILI9341_due -Documentation: http://marekburiak.github.io/ILI9341_due/ - -Copyright (c) 2015 Marek Buriak - -2.4 TFT Pin-out -T_IRQ T_DO T_DIN T_CS T_CLK MISO LED CLK MOSI DC RESET CS GND VCC - -This library is based on ILI9341_t3 library from Paul Stoffregen -(https://github.com/PaulStoffregen/ILI9341_t3), Adafruit_ILI9341 -and Adafruit_GFX libraries from Limor Fried/Ladyada -(https://github.com/adafruit/Adafruit_ILI9341). - -This file is part of the Arduino ILI9341_due library. -Sources for this library can be found at https://github.com/marekburiak/ILI9341_Due. - -ILI9341_due is free software: you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation, either version 2.1 of the License, or -(at your option) any later version. - -ILI9341_due is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with ILI9341_due. If not, see . -*/ - -/*************************************************** -This is our library for the Adafruit ILI9341 Breakout and Shield -----> http://www.adafruit.com/products/1651 - -Check out the links above for our tutorials and wiring diagrams -These displays use SPI to communicate, 4 or 5 pins are required to -interface (RST is optional) -Adafruit invests time and resources providing this open source code, -please support Adafruit and open-source hardware by purchasing -products from Adafruit! - -Written by Limor Fried/Ladyada for Adafruit Industries. -MIT license, all text above must be included in any redistribution -****************************************************/ - -#ifndef _ILI9341_dueH_ -#define _ILI9341_dueH_ - -#include -//#include "../Streaming/Streaming.h" - -#include "Arduino.h" - -#ifdef ARDUINO_ARCH_AVR -#include -#endif - -#ifdef ARDUINO_ARCH_AVR -#define SPI_MODE_NORMAL 1 -#define SPI_MODE_EXTENDED 0 -#define SPI_MODE_DMA 0 -#else -#ifndef ILI9341_SPI_MODE_NORMAL -#define SPI_MODE_NORMAL 0 -#else -#define SPI_MODE_NORMAL 1 -#endif - -#ifndef ILI9341_SPI_MODE_EXTENDED -#define SPI_MODE_EXTENDED 0 -#else -#define SPI_MODE_EXTENDED 1 -#endif - -#ifndef ILI9341_SPI_MODE_DMA -#define SPI_MODE_DMA 0 -#else -#define SPI_MODE_DMA 1 -#endif -#endif - -#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED | defined(ILI_USE_SPI_TRANSACTION) -#include -#endif -#if SPI_MODE_DMA -#include -#endif - -#define ILI9341_TFTWIDTH 240 -#define ILI9341_TFTHEIGHT 320 - -#define ILI9341_NOP 0x00 -#define ILI9341_SWRESET 0x01 -#define ILI9341_RDDID 0x04 -#define ILI9341_RDDST 0x09 - -#define ILI9341_SLPIN 0x10 -#define ILI9341_SLPOUT 0x11 -#define ILI9341_PTLON 0x12 -#define ILI9341_NORON 0x13 - -#define ILI9341_RDMODE 0x0A -#define ILI9341_RDMADCTL 0x0B -#define ILI9341_RDPIXFMT 0x0C -#define ILI9341_RDIMGFMT 0x0D -#define ILI9341_RDDSPSGNMODE 0x0E -#define ILI9341_RDSELFDIAG 0x0F - -#define ILI9341_INVOFF 0x20 -#define ILI9341_INVON 0x21 -#define ILI9341_GAMMASET 0x26 -#define ILI9341_DISPOFF 0x28 -#define ILI9341_DISPON 0x29 - -#define ILI9341_CASET 0x2A -#define ILI9341_PASET 0x2B -#define ILI9341_RAMWR 0x2C -#define ILI9341_RAMRD 0x2E - -#define ILI9341_PTLAR 0x30 -#define ILI9341_MADCTL 0x36 -#define ILI9341_IDMOFF 0x38 -#define ILI9341_IDMON 0x39 -#define ILI9341_PIXFMT 0x3A - -#define ILI9341_FRMCTR1 0xB1 -#define ILI9341_FRMCTR2 0xB2 -#define ILI9341_FRMCTR3 0xB3 -#define ILI9341_INVCTR 0xB4 -#define ILI9341_DFUNCTR 0xB6 - -#define ILI9341_PWCTR1 0xC0 -#define ILI9341_PWCTR2 0xC1 -#define ILI9341_PWCTR3 0xC2 -#define ILI9341_PWCTR4 0xC3 -#define ILI9341_PWCTR5 0xC4 -#define ILI9341_VMCTR1 0xC5 -#define ILI9341_VMCTR2 0xC7 - -#define ILI9341_RDID1 0xDA -#define ILI9341_RDID2 0xDB -#define ILI9341_RDID3 0xDC -#define ILI9341_RDID4 0xDD - -#define ILI9341_GMCTRP1 0xE0 -#define ILI9341_GMCTRN1 0xE1 -/* -#define ILI9341_PWCTR6 0xFC - -*/ - -// Color definitions -#define ILI9341_ALICEBLUE 0xF7DF -#define ILI9341_ANTIQUEWHITE 0xFF5A -#define ILI9341_AQUA 0x07FF -#define ILI9341_AQUAMARINE 0x7FFA -#define ILI9341_AZURE 0xF7FF -#define ILI9341_BEIGE 0xF7BB -#define ILI9341_BISQUE 0xFF38 -#define ILI9341_BLACK 0x0000 -#define ILI9341_BLANCHEDALMOND 0xFF59 -#define ILI9341_BLUE 0x001F -#define ILI9341_BLUEVIOLET 0x895C -#define ILI9341_BROWN 0xA145 -#define ILI9341_BURLYWOOD 0xDDD0 -#define ILI9341_CADETBLUE 0x5CF4 -#define ILI9341_CHARTREUSE 0x7FE0 -#define ILI9341_CHOCOLATE 0xD343 -#define ILI9341_CORAL 0xFBEA -#define ILI9341_CORNFLOWERBLUE 0x64BD -#define ILI9341_CORNSILK 0xFFDB -#define ILI9341_CRIMSON 0xD8A7 -#define ILI9341_CYAN 0x07FF -#define ILI9341_DARKBLUE 0x0011 -#define ILI9341_DARKCYAN 0x0451 -#define ILI9341_DARKGOLDENROD 0xBC21 -#define ILI9341_DARKGRAY 0xAD55 -#define ILI9341_DARKGREEN 0x0320 -#define ILI9341_DARKKHAKI 0xBDAD -#define ILI9341_DARKMAGENTA 0x8811 -#define ILI9341_DARKOLIVEGREEN 0x5345 -#define ILI9341_DARKORANGE 0xFC60 -#define ILI9341_DARKORCHID 0x9999 -#define ILI9341_DARKRED 0x8800 -#define ILI9341_DARKSALMON 0xECAF -#define ILI9341_DARKSEAGREEN 0x8DF1 -#define ILI9341_DARKSLATEBLUE 0x49F1 -#define ILI9341_DARKSLATEGRAY 0x2A69 -#define ILI9341_DARKTURQUOISE 0x067A -#define ILI9341_DARKVIOLET 0x901A -#define ILI9341_DEEPPINK 0xF8B2 -#define ILI9341_DEEPSKYBLUE 0x05FF -#define ILI9341_DIMGRAY 0x6B4D -#define ILI9341_DODGERBLUE 0x1C9F -#define ILI9341_FIREBRICK 0xB104 -#define ILI9341_FLORALWHITE 0xFFDE -#define ILI9341_FORESTGREEN 0x2444 -#define ILI9341_FUCHSIA 0xF81F -#define ILI9341_GAINSBORO 0xDEFB -#define ILI9341_GHOSTWHITE 0xFFDF -#define ILI9341_GOLD 0xFEA0 -#define ILI9341_GOLDENROD 0xDD24 -#define ILI9341_GRAY 0x8410 -#define ILI9341_GREEN 0x0400 -#define ILI9341_GREENYELLOW 0xAFE5 -#define ILI9341_HONEYDEW 0xF7FE -#define ILI9341_HOTPINK 0xFB56 -#define ILI9341_INDIANRED 0xCAEB -#define ILI9341_INDIGO 0x4810 -#define ILI9341_IVORY 0xFFFE -#define ILI9341_KHAKI 0xF731 -#define ILI9341_LAVENDER 0xE73F -#define ILI9341_LAVENDERBLUSH 0xFF9E -#define ILI9341_LAWNGREEN 0x7FE0 -#define ILI9341_LEMONCHIFFON 0xFFD9 -#define ILI9341_LIGHTBLUE 0xAEDC -#define ILI9341_LIGHTCORAL 0xF410 -#define ILI9341_LIGHTCYAN 0xE7FF -#define ILI9341_LIGHTGOLDENRODYELLOW 0xFFDA -#define ILI9341_LIGHTGREEN 0x9772 -#define ILI9341_LIGHTGREY 0xD69A -#define ILI9341_LIGHTPINK 0xFDB8 -#define ILI9341_LIGHTSALMON 0xFD0F -#define ILI9341_LIGHTSEAGREEN 0x2595 -#define ILI9341_LIGHTSKYBLUE 0x867F -#define ILI9341_LIGHTSLATEGRAY 0x7453 -#define ILI9341_LIGHTSTEELBLUE 0xB63B -#define ILI9341_LIGHTYELLOW 0xFFFC -#define ILI9341_LIME 0x07E0 -#define ILI9341_LIMEGREEN 0x3666 -#define ILI9341_LINEN 0xFF9C -#define ILI9341_MAGENTA 0xF81F -#define ILI9341_MAROON 0x8000 -#define ILI9341_MEDIUMAQUAMARINE 0x6675 -#define ILI9341_MEDIUMBLUE 0x0019 -#define ILI9341_MEDIUMORCHID 0xBABA -#define ILI9341_MEDIUMPURPLE 0x939B -#define ILI9341_MEDIUMSEAGREEN 0x3D8E -#define ILI9341_MEDIUMSLATEBLUE 0x7B5D -#define ILI9341_MEDIUMSPRINGGREEN 0x07D3 -#define ILI9341_MEDIUMTURQUOISE 0x4E99 -#define ILI9341_MEDIUMVIOLETRED 0xC0B0 -#define ILI9341_MIDNIGHTBLUE 0x18CE -#define ILI9341_MINTCREAM 0xF7FF -#define ILI9341_MISTYROSE 0xFF3C -#define ILI9341_MOCCASIN 0xFF36 -#define ILI9341_NAVAJOWHITE 0xFEF5 -#define ILI9341_NAVY 0x0010 -#define ILI9341_OLDLACE 0xFFBC -#define ILI9341_OLIVE 0x8400 -#define ILI9341_OLIVEDRAB 0x6C64 -#define ILI9341_ORANGE 0xFD20 -#define ILI9341_ORANGERED 0xFA20 -#define ILI9341_ORCHID 0xDB9A -#define ILI9341_PALEGOLDENROD 0xEF55 -#define ILI9341_PALEGREEN 0x9FD3 -#define ILI9341_PALETURQUOISE 0xAF7D -#define ILI9341_PALEVIOLETRED 0xDB92 -#define ILI9341_PAPAYAWHIP 0xFF7A -#define ILI9341_PEACHPUFF 0xFED7 -#define ILI9341_PERU 0xCC27 -#define ILI9341_PINK 0xFE19 -#define ILI9341_PLUM 0xDD1B -#define ILI9341_POWDERBLUE 0xB71C -#define ILI9341_PURPLE 0x8010 -#define ILI9341_RED 0xF800 -#define ILI9341_ROSYBROWN 0xBC71 -#define ILI9341_ROYALBLUE 0x435C -#define ILI9341_SADDLEBROWN 0x8A22 -#define ILI9341_SALMON 0xFC0E -#define ILI9341_SANDYBROWN 0xF52C -#define ILI9341_SEAGREEN 0x2C4A -#define ILI9341_SEASHELL 0xFFBD -#define ILI9341_SIENNA 0xA285 -#define ILI9341_SILVER 0xC618 -#define ILI9341_SKYBLUE 0x867D -#define ILI9341_SLATEBLUE 0x6AD9 -#define ILI9341_SLATEGRAY 0x7412 -#define ILI9341_SNOW 0xFFDF -#define ILI9341_SPRINGGREEN 0x07EF -#define ILI9341_STEELBLUE 0x4416 -#define ILI9341_TAN 0xD5B1 -#define ILI9341_TEAL 0x0410 -#define ILI9341_THISTLE 0xDDFB -#define ILI9341_TOMATO 0xFB08 -#define ILI9341_TURQUOISE 0x471A -#define ILI9341_VIOLET 0xEC1D -#define ILI9341_WHEAT 0xF6F6 -#define ILI9341_WHITE 0xFFFF -#define ILI9341_WHITESMOKE 0xF7BE -#define ILI9341_YELLOW 0xFFE0 -#define ILI9341_YELLOWGREEN 0x9E66 - -// Font Indices -#define GTEXT_FONT_LENGTH 0 -#define GTEXT_FONT_FIXED_WIDTH 2 -#define GTEXT_FONT_HEIGHT 3 -#define GTEXT_FONT_FIRST_CHAR 4 -#define GTEXT_FONT_CHAR_COUNT 5 -#define GTEXT_FONT_WIDTH_TABLE 6 - -typedef enum -{ - gTextFontModeSolid = 0, - gTextFontModeTransparent = 1 -} gTextFontMode; - -// the following returns true if the given font is fixed width -// zero length is flag indicating fixed width font (array does not contain width data entries) -#define isFixedWidthFont(font) (pgm_read_byte(font+GTEXT_FONT_LENGTH) == 0 && pgm_read_byte(font+GTEXT_FONT_LENGTH+1) == 0)) - -typedef enum -{ - gTextAlignTopLeft, - gTextAlignTopCenter, - gTextAlignTopRight, - gTextAlignMiddleLeft, - gTextAlignMiddleCenter, - gTextAlignMiddleRight, - gTextAlignBottomLeft, - gTextAlignBottomCenter, - gTextAlignBottomRight -} gTextAlign; - -typedef enum -{ - gTextPivotDefault, - gTextPivotTopLeft, - gTextPivotTopCenter, - gTextPivotTopRight, - gTextPivotMiddleLeft, - gTextPivotMiddleCenter, - gTextPivotMiddleRight, - gTextPivotBottomLeft, - gTextPivotBottomCenter, - gTextPivotBottomRight -} gTextPivot; - -typedef enum -{ - gTextEraseToEOL = 0x01, /**< Erase From cursor to end of Line */ - gTextEraseFromBOL = 0x02, /**< Erase From Beginning of Line to Cursor*/ - gTextEraseFullLine = 0x03 /**< Erase Entire line */ -} gTextEraseLine; - -typedef struct -{ - uint16_t x; - uint16_t y; - uint16_t w; - uint16_t h; -} gTextArea; - -typedef const uint8_t *gTextFont; - -typedef enum -{ - iliRotation0 = 0, - iliRotation90 = 1, - iliRotation180 = 2, - iliRotation270 = 3 -} iliRotation; - -typedef enum -{ - // Normal Mode On (full display) - // In this mode, the display is able to show maximum 262,144 colors. - pwrLevelNormal = 1, - // Idle Mode On - // In this mode, the full display area is used but with 8 colors. - pwrLevelIdle = 2, - // In this mode, the DC : DC converter, Internal oscillator and panel driver circuit are stopped. Only the MCU - // interface and memory works with VDDI power supply. Contents of the memory are safe. - pwrLevelSleep = 3 -} pwrLevel; - -#ifndef swap -#define swap(a, b) \ - { \ - typeof(a) t = a; \ - a = b; \ - b = t; \ - } -#endif - -#ifdef ARDUINO_SAM_DUE -#define SCANLINE_PIXEL_COUNT 320 -#elif defined ARDUINO_ARCH_AVR -#define SCANLINE_PIXEL_COUNT 16 -#endif - -#if SPI_MODE_DMA | SPI_MODE_EXTENDED -#define SCANLINE_BUFFER_SIZE SCANLINE_PIXEL_COUNT << 1 -#elif SPI_MODE_NORMAL -#define SCANLINE_BUFFER_SIZE SCANLINE_PIXEL_COUNT -#endif - -class ILI9341_due - : public Print -{ - protected: - int16_t _width, _height; // Display w/h as modified by current rotation - iliRotation _rotation; - - float _arcAngleMax; - int16_t _angleOffset; - - void fillArcOffsetted(uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float startAngle, float endAngle, uint16_t color); - - void drawFastVLine_cont_noFill(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastVLine_noTrans(int16_t x, int16_t y, uint16_t h, uint16_t color); - void drawFastHLine_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t color); - void drawLine_noTrans(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); - void printHex8(uint8_t *data, uint8_t length); - void printHex16(uint16_t *data, uint8_t length); - void printHex32(uint32_t *data, uint8_t length); - - uint8_t _rst; - uint8_t _hiByte, _loByte; - bool _isIdle, _isInSleep; - uint16_t _color; - - uint16_t _scanline16[SCANLINE_PIXEL_COUNT]; - //#if SPI_MODE_DMA | SPI_MODE_EXTENDED - // uint8_t _scanline[SCANLINE_BUFFER_SIZE]; - // - //#elif SPI_MODE_NORMAL - // uint16_t _scanline[SCANLINE_BUFFER_SIZE]; - //#endif - - //uint16_t _scanlineCounter = 0; -#if SPI_MODE_DMA | SPI_MODE_EXTENDED - - //uint16_t _scanline[SCANLINE_BUFFER_SIZE]; // DMA16 -#endif - - uint8_t _spiClkDivider; -#ifdef ILI_USE_SPI_TRANSACTION - SPISettings _spiSettings; - uint8_t _transactionId; - bool _isInTransaction; -#endif - //Pio *_dcport; -#ifdef ARDUINO_SAM_DUE - volatile RwReg *_dcport; - uint32_t _cs, _dc, _dcpinmask; -#else - volatile uint8_t *_dcport, *_csport; - volatile uint8_t _dcport2; - uint8_t _cs, _dc, _cspinmask, _dcpinmask, _backupSPCR; -#endif - -#if SPI_MODE_NORMAL | SPI_MODE_DMA -#ifdef ARDUINO_SAM_DUE - //Pio *_csport; - volatile RwReg *_csport; - uint32_t _cspinmask; -#endif -#endif - - gTextFontMode _fontMode; - uint16_t _fontColor; - uint16_t _fontBgColor; - gTextFont _font; - gTextArea _area; - int16_t _x; - int16_t _xStart; - int16_t _y; - int16_t _yStart; - uint8_t _letterSpacing; - uint8_t _lineSpacing; - bool _isFirstChar; - //bool _needScroll; - //bool _wrap; - -#ifdef TEXT_SCALING_ENABLED - uint8_t _textScale; -#else -#define _textScale 1 -#endif - void fillRect_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); - void fillRectWithShader_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t (*fillShader)(uint16_t rx, uint16_t ry)); - void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color); - void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color); - void pushColors_noTrans_noCS(const uint16_t *colors, uint16_t offset, uint32_t len); - - void specialChar(uint8_t c); - void drawSolidChar(char c, uint16_t index, uint16_t charWidth, uint16_t charHeight); - void drawTransparentChar(char c, uint16_t index, uint16_t charWidth, uint16_t charHeight); - void applyPivot(const char *str, gTextPivot pivot, gTextAlign align); - void applyPivot(const String &str, gTextPivot pivot, gTextAlign align); - void applyPivot(const __FlashStringHelper *str, gTextPivot pivot, gTextAlign align); - void applyAlignOffset(gTextAlign align, int16_t offsetX, int16_t offsetY); - void applyAlignPivotOffset(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); - void applyAlignPivotOffset(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); - void applyAlignPivotOffset(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); - void clearPixelsOnLeft(uint16_t pixelsToClearOnLeft); - void clearPixelsOnRight(uint16_t pixelsToClearOnRight); - - bool pinIsChipSelect(uint8_t cs); - - public: - ILI9341_due(uint8_t cs, uint8_t dc, uint8_t rst = 255); - - bool begin(void); - void getDisplayStatus(); - void fillScreen(uint16_t color); - void fillRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); - void fillRectWithShader(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t (*fillShader)(uint16_t rx, uint16_t ry)); - - void pushColor(uint16_t color); - void pushColors(const uint16_t *colors, uint16_t offset, uint32_t len); - void pushColors(uint16_t *colors, uint16_t offset, uint32_t len); - /*void pushColors565(uint8_t *colors, uint16_t offset, uint32_t len); - void pushColors565(const uint16_t *colors, uint16_t offset, uint32_t len);*/ - - void drawPixel(int16_t x, int16_t y, uint16_t color); - void drawFastVLine(int16_t x, int16_t y, uint16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, uint16_t w, uint16_t color); - void drawRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); - - void setRotation(iliRotation r); - void invertDisplay(boolean i); - void display(boolean d); - void sleep(boolean s); - void idle(boolean i); - void setPowerLevel(pwrLevel p); - void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); - void setAddrWindowRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h); - void setSPIClockDivider(uint8_t divider); - void setAngleOffset(int16_t angleOffset); - void setArcParams(float arcAngleMax); - - uint16_t readPixel(int16_t x, int16_t y); - void drawCircle(int16_t x, int16_t y, int16_t r, uint16_t color); - void fillCircle(int16_t x, int16_t y, int16_t r, uint16_t color); - void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); - void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); - void drawRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t radius, uint16_t color); - void fillRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t radius, uint16_t color); - void drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); - void drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color, uint16_t bgcolor); - void drawImage(const uint16_t *colors, uint16_t x, uint16_t y, uint16_t w, uint16_t h); - uint8_t getRotation(void); - void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); - void drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t length, uint16_t color); - void drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t start, uint16_t length, uint16_t color); - - void screenshotToConsole(); - - void setTextArea(gTextArea area); - void setTextArea(int16_t x, int16_t y, int16_t w, int16_t h); //, textMode mode=DEFAULT_SCROLLDIR); - void setTextArea(int16_t x, int16_t y, int16_t columns, int16_t rows, gTextFont font); //, textMode mode=DEFAULT_SCROLLDIR); - gTextArea getTextArea() - { - return _area; - } - - void clearTextArea(); - void clearTextArea(gTextArea area); - void clearTextArea(uint16_t color); - void clearTextArea(gTextArea area, uint16_t color); - - // Font Functions - void setFont(gTextFont font); - gTextFont getFont() - { - return _font; - } - void setTextColor(uint16_t color); - void setTextColor(uint8_t R, uint8_t G, uint8_t B); - void setTextColor(uint16_t color, uint16_t backgroundColor); - void setTextColor(uint8_t R, uint8_t G, uint8_t B, uint8_t bgR, uint8_t bgG, uint8_t bgB); - uint16_t getTextColor() - { - return _fontColor; - } - - uint16_t getTextBackgroundColor() - { - return _fontBgColor; - } - - void setTextLetterSpacing(uint8_t letterSpacing); - uint8_t getTextLetterSpacing() - { - return _letterSpacing; - }; - - void setTextLineSpacing(uint8_t lineSpacing); - uint8_t getTextLineSpacing() - { - return _lineSpacing; - }; - - //void setTextWrap(bool wrap); - void setFontMode(gTextFontMode fontMode); - gTextFontMode getFontMode() - { - return _fontMode; - } - - void setTextScale(uint8_t textScale); - uint8_t getTextScale() - { - return _textScale; - } - - //void puts(const char *str); - //void puts(const String &str); - //void puts(const __FlashStringHelper* str); - - void printAt(const char *str, int16_t x, int16_t y); - void printAt(const String &str, int16_t x, int16_t y); - void printAt(const __FlashStringHelper *str, int16_t x, int16_t y); - - void printAt(const char *str, int16_t x, int16_t y, gTextEraseLine eraseLine); - void printAt(const String &str, int16_t x, int16_t y, gTextEraseLine eraseLine); - void printAt(const __FlashStringHelper *str, int16_t x, int16_t y, gTextEraseLine eraseLine); - - void printAt(const char *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAt(const String &str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAt(const __FlashStringHelper *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - - void printAtPivoted(const char *str, int16_t x, int16_t y, gTextPivot pivot); - void printAtPivoted(const String &str, int16_t x, int16_t y, gTextPivot pivot); - void printAtPivoted(const __FlashStringHelper *str, int16_t x, int16_t y, gTextPivot pivot); - - void printAligned(const char *str, gTextAlign align); - void printAligned(const String &str, gTextAlign align); - void printAligned(const __FlashStringHelper *str, gTextAlign align); - - void printAligned(const char *str, gTextAlign align, gTextEraseLine eraseLine); - void printAligned(const String &str, gTextAlign align, gTextEraseLine eraseLine); - void printAligned(const __FlashStringHelper *str, gTextAlign align, gTextEraseLine eraseLine); - - void printAligned(const char *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAligned(const String &str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAligned(const __FlashStringHelper *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - - void printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY); - void printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY); - void printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY); - - void printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); - void printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); - void printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); - - void printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - - void printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot); - void printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot); - void printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot); - - void printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine); - void printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine); - void printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine); - - void printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - - void printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); - void printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); - void printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); - - void printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); - void printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); - void printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); - - void printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - void printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); - - void cursorTo(uint8_t column, uint8_t row); // 0 based coordinates for character columns and rows - void cursorTo(int8_t column); // move cursor on the current row - void cursorToXY(int16_t x, int16_t y); // coordinates relative to active text area - - __attribute__((always_inline)) - uint8_t - getFontHeight() - { - return pgm_read_byte(_font + GTEXT_FONT_HEIGHT); - }; - - __attribute__((always_inline)) static uint8_t getFontHeight(gTextFont font) - { - return pgm_read_byte(font + GTEXT_FONT_HEIGHT); - }; - - uint8_t readcommand8(uint8_t c) - { - writecommand_cont(0xD9); // woo sekret command? - writedata8_last(0x10); - writecommand_cont(c); - return readdata8_last(); - } - - // Pass 8-bit (each) R,G,B, get back 16-bit packed color - static uint16_t color565(uint8_t r, uint8_t g, uint8_t b) - { - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); - } - - int16_t width() - { - return _width; - } - - int16_t height() - { - return _height; - } - - virtual size_t write(uint8_t); - virtual size_t print(const __FlashStringHelper *); - virtual size_t print(const String &); - virtual size_t print(const char[]); - virtual size_t print(char); - virtual size_t print(unsigned char, int = DEC); - virtual size_t print(int, int = DEC); - virtual size_t print(unsigned int, int = DEC); - virtual size_t print(long, int = DEC); - virtual size_t print(unsigned long, int = DEC); - virtual size_t print(double, int = 2); - virtual size_t print(const Printable &); - - virtual size_t println(const __FlashStringHelper *); - virtual size_t println(const String &s); - virtual size_t println(const char[]); - virtual size_t println(char); - virtual size_t println(unsigned char, int = DEC); - virtual size_t println(int, int = DEC); - virtual size_t println(unsigned int, int = DEC); - virtual size_t println(long, int = DEC); - virtual size_t println(unsigned long, int = DEC); - virtual size_t println(double, int = 2); - virtual size_t println(const Printable &); - virtual size_t println(void); - - uint16_t getCharWidth(uint8_t c); - uint16_t getStringWidth(const char *str); - uint16_t getStringWidth(const __FlashStringHelper *str); - uint16_t getStringWidth(const String &str); - - void eraseTextLine(uint16_t color, gTextEraseLine type = gTextEraseToEOL); //ansi like line erase function - void eraseTextLine(uint16_t color, uint8_t row); // erase the entire text line in the given row and move cursor to left position - - int16_t getCursorX() - { - return _x; - } - - int16_t getCursorY() - { - return _y; - } - - static uint16_t getCharWidth(uint8_t c, gTextFont font, uint8_t textScale) - { - int16_t width = 0; - - if (isFixedWidthFont(font){ - width = (pgm_read_byte(font + GTEXT_FONT_FIXED_WIDTH)) * textScale; - } - else{ - // variable width font - uint8_t firstChar = pgm_read_byte(font + GTEXT_FONT_FIRST_CHAR); - uint8_t charCount = pgm_read_byte(font + GTEXT_FONT_CHAR_COUNT); - - // read width data - if (c >= firstChar && c < (firstChar + charCount)) - { - c -= firstChar; - width = (pgm_read_byte(font + GTEXT_FONT_WIDTH_TABLE + c)) * textScale; - } - } - return width; - }; - - static uint16_t getStringWidth(const char *str, gTextFont font, uint8_t letterSpacing, uint8_t textScale) - { - uint16_t width = 0; - - while (*str != 0) - { - width += getCharWidth(*str++, font, textScale) + letterSpacing * textScale; - } - if (width > 0) - width -= letterSpacing * textScale; - - return width; - }; - - inline __attribute__((always_inline)) void fillArc(uint16_t x, uint16_t y, uint16_t radius, uint16_t thickness, float start, float end, uint16_t color) - { - beginTransaction(); - if (start == 0 && end == _arcAngleMax) - fillArcOffsetted(x, y, radius, thickness, 0, _arcAngleMax, color); - else - fillArcOffsetted(x, y, radius, thickness, start + (_angleOffset / (float)360) * _arcAngleMax, end + (_angleOffset / (float)360) * _arcAngleMax, color); - endTransaction(); - } - - //int32_t cos_lookup(int32_t angle) - //{ - // float radians = (float)angle/_arcAngleMax * 2 * PI; - // //Serial << "COS_LOOKUP angle:" << (float)angle << " radians:" << radians << " cos:" << cos(radians) << " return: " << cos(radians) * (double)65535 << endl; - // return (cos(radians) * _arcAngleMax); - //} - - //int32_t sin_lookup(int32_t angle) - //{ - // float radians = (float)angle/_arcAngleMax * 2 * PI; - // //Serial << "SIN_LOOKUP angle:" << (float)angle << " radians:" << radians << " sin:" << sin(radians) << " return: " << sin(radians) * (double)65535 << endl; - // return (sin(radians) * _arcAngleMax); - //} - - float cosDegrees(float angle) - { - //float radians = angle / (float)360 * 2 * PI; - //Serial << "COS_LOOKUP angle:" << (float)angle << " radians:" << radians << " cos:" << cos(radians) << " return: " << cos(radians) * (double)65535 << endl; - return cos(angle * DEG_TO_RAD); - } - - float sinDegrees(float angle) - { - //float radians = angle / (float)360 * 2 * PI; - //Serial << "SIN_LOOKUP angle:" << (float)angle << " radians:" << radians << " sin:" << sin(radians) << " return: " << sin(radians) * (double)65535 << endl; - return sin(angle * DEG_TO_RAD); - } - - protected: - __attribute__((always_inline)) - uint16_t - scaledFontHeight() - { - return (uint16_t)(pgm_read_byte(_font + GTEXT_FONT_HEIGHT)) * (uint16_t)_textScale; - }; - - __attribute__((always_inline)) void beginTransaction() - { -#ifdef ILI_USE_SPI_TRANSACTION -#if defined ARDUINO_ARCH_AVR - SPI.beginTransaction(_spiSettings); -#elif defined(ARDUINO_SAM_DUE) -#if SPI_MODE_NORMAL - SPI.beginTransaction(_spiSettings); -#elif SPI_MODE_EXTENDED - SPI.beginTransaction(_cs, _spiSettings); -#elif SPI_MODE_DMA - SPI.beginTransaction(_spiSettings); - dmaInit(_spiClkDivider); -#endif -#endif -#endif - } - - __attribute__((always_inline)) void endTransaction() - { -#ifdef ILI_USE_SPI_TRANSACTION -#if defined ARDUINO_ARCH_AVR - SPI.endTransaction(); -#elif defined(ARDUINO_SAM_DUE) - SPI.endTransaction(); -#endif -#endif - } - - __attribute__((always_inline)) void spiwrite(uint8_t c) - { -#if defined ARDUINO_ARCH_AVR - SPDR = c; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) - ; // wait -#elif defined(ARDUINO_SAM_DUE) -#if SPI_MODE_NORMAL - SPI.transfer(c); -#endif -#endif - } - - __attribute__((always_inline)) void spiwrite16(uint16_t d) - { -#if defined ARDUINO_ARCH_AVR - SPDR = highByte(d); - while (!(SPSR & _BV(SPIF))) - ; - SPDR = lowByte(d); - while (!(SPSR & _BV(SPIF))) - ; -#elif defined(ARDUINO_SAM_DUE) -#if SPI_MODE_NORMAL - SPI.transfer(highByte(d)); - SPI.transfer(lowByte(d)); -#endif -#endif - } - - // writes 1 byte - // CS and DC have to be set prior to calling this method - __attribute__((always_inline)) void write8_cont(uint8_t c) - { -#if SPI_MODE_NORMAL - spiwrite(c); -#elif SPI_MODE_EXTENDED - SPI.transfer(_cs, c, SPI_CONTINUE); -#elif SPI_MODE_DMA - dmaSend(c); -#endif - } - - // writes 1 byte and disables CS - // CS and DC have to be set prior to calling this method - inline __attribute__((always_inline)) void write8_last(uint8_t c) - { -#if SPI_MODE_NORMAL - spiwrite(c); - disableCS(); -#elif SPI_MODE_EXTENDED - SPI.transfer(_cs, c, SPI_LAST); -#elif SPI_MODE_DMA - dmaSend(c); - disableCS(); -#endif - } - - // Writes 2 bytes - // CS, DC have to be set prior to calling this method - __attribute__((always_inline)) void write16_cont(uint16_t d) - { -#if SPI_MODE_NORMAL - spiwrite16(d); -#elif SPI_MODE_EXTENDED - SPI.transfer(_cs, highByte(d), SPI_CONTINUE); - SPI.transfer(_cs, lowByte(d), SPI_CONTINUE); -#elif SPI_MODE_DMA - dmaSend(highByte(d)); - dmaSend(lowByte(d)); -#endif - } - - __attribute__((always_inline)) void write16_last(uint16_t d) - { -#if SPI_MODE_NORMAL - spiwrite16(d); - disableCS(); -#elif SPI_MODE_EXTENDED - SPI.transfer(_cs, highByte(d), SPI_CONTINUE); - SPI.transfer(_cs, lowByte(d), SPI_LAST); -#elif SPI_MODE_DMA - dmaSend(highByte(d)); - dmaSend(lowByte(d)); - disableCS(); -#endif - } - - // Writes commands to set the GRAM area where data/pixels will be written - void setAddr_cont(uint16_t x, uint16_t y, uint16_t w, uint16_t h) - __attribute__((always_inline)) - { - writecommand_cont(ILI9341_CASET); // Column addr set - setDCForData(); - write16_cont(x); // XSTART - write16_cont(x + w - 1); // XEND - writecommand_cont(ILI9341_PASET); // Row addr set - setDCForData(); - write16_cont(y); // YSTART - write16_cont(y + h - 1); // YEND - } - - //__attribute__((always_inline)) - //void setAddrAndRW_cont(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) - // { - // writecommand_cont(ILI9341_CASET); // Column addr set - // writedata16_cont(x0); // XSTART - // writedata16_cont(x1); // XEND - // writecommand_cont(ILI9341_PASET); // Row addr set - // writedata16_cont(y0); // YSTART - // writedata16_cont(y1); // YEND - // writecommand_cont(ILI9341_RAMWR); // write to RAM - //} - - // Enables CS, writes commands to set the GRAM area where data/pixels will be written - //__attribute__((always_inline)) - // void setAddr_cont(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) - //{ - // enableCS(); - // setDCForCommand(); - // write8_cont(ILI9341_CASET); // Column addr set - // setDCForData(); - // write16_cont(x0); // XSTART - // write16_cont(x1); // XEND - // setDCForCommand(); - // write8_cont(ILI9341_PASET); // Row addr set - // setDCForData(); - // write16_cont(y0); // XSTART - // write16_cont(y1); // XEND - //} - - // Enables CS, writes commands to set the GRAM area where data/pixels will be written - // Also sends RAM WRITE command which should be followed by writing data/pixels -#ifdef ARDUINO_SAM_DUE - inline __attribute__((always_inline)) -#endif - void - setAddrAndRW_cont(uint16_t x, uint16_t y, uint16_t w, uint16_t h) - { - setDCForCommand(); - write8_cont(ILI9341_CASET); // Column addr set - setDCForData(); - write16_cont(x); // XSTART - write16_cont(x + w - 1); // XEND - setDCForCommand(); - write8_cont(ILI9341_PASET); // Row addr set - setDCForData(); - write16_cont(y); // YSTART - write16_cont(y + h - 1); // YEND - setDCForCommand(); - write8_cont(ILI9341_RAMWR); // RAM write - } - - inline __attribute__((always_inline)) void setAddrAndRW_cont_inline(uint16_t x, uint16_t y, uint16_t w, uint16_t h) - { - setDCForCommand(); - write8_cont(ILI9341_CASET); // Column addr set - setDCForData(); - write16_cont(x); // XSTART - write16_cont(x + w - 1); // XEND - setDCForCommand(); - write8_cont(ILI9341_PASET); // Row addr set - setDCForData(); - write16_cont(y); // YSTART - write16_cont(y + h - 1); // YEND - setDCForCommand(); - write8_cont(ILI9341_RAMWR); // RAM write - } - -#ifdef ARDUINO_SAM_DUE - inline __attribute__((always_inline)) -#endif - void - setColumnAddr(uint16_t x, uint16_t w) - { - setDCForCommand(); - write8_cont(ILI9341_CASET); // Column addr set - setDCForData(); - write16_cont(x); // XSTART - write16_cont(x + w - 1); // XEND - } - -#ifdef ARDUINO_SAM_DUE - inline __attribute__((always_inline)) -#endif - void - setRowAddr(uint16_t y, uint16_t h) - { - setDCForCommand(); - write8_cont(ILI9341_PASET); // Row addr set - setDCForData(); - write16_cont(y); // YSTART - write16_cont(y + h - 1); // YEND - } - - inline __attribute__((always_inline)) void setRW() // RAM Write - { - setDCForCommand(); - write8_cont(ILI9341_RAMWR); // RAM write - } - - // Writes commands to set the GRAM area where data/pixels will be written - // Also sends RAM WRITE command which should be followed by writing data/pixels - // CS has to be enabled prior to calling this method - //__attribute__((always_inline)) - // void setAddrAndRW_cont_noCS(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) - //{ - // setDCForCommand(); - // write8_cont(ILI9341_CASET); // Column addr set - // setDCForData(); - // write16_cont(x0); // XSTART - // write16_cont(x1); // XEND - // setDCForCommand(); - // write8_cont(ILI9341_PASET); // Row addr set - // setDCForData(); - // write16_cont(y0); // XSTART - // write16_cont(y1); // XEND - // setDCForCommand(); - // write8_cont(ILI9341_RAMWR); // Row addr set - //} - - // Enables CS, sets DC for Command, writes 1 byte - // Does not disable CS - // __attribute__((always_inline)) - // void writecommand_cont(uint8_t c) { - // setDCForCommand(); - //#if SPI_MODE_NORMAL - // enableCS(); - // SPI.transfer(c); - //#elif SPI_MODE_EXTENDED - // SPI.transfer(_cs, c, SPI_CONTINUE); - //#elif SPI_MODE_DMA - // enableCS(); - // dmaSend(c); - //#endif - // } - - // Enables CS, sets DC for Command, writes 1 byte - // Does not disable CS - inline __attribute__((always_inline)) void writecommand_cont(uint8_t c) - { - setDCForCommand(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - write8_cont(c); - } - - // Enables CS, sets DC for Command, writes 1 byte, disables CS - inline __attribute__((always_inline)) void writecommand_last(uint8_t c) - { - setDCForCommand(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - write8_last(c); - } - - // Enables CS, sets DC to Data, writes 1 byte - // Does not disable CS - inline __attribute__((always_inline)) void writedata8_cont(uint8_t c) - { - setDCForData(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - write8_cont(c); - } - - // Enables CS, sets DC to Data, writes 1 byte, disables CS - __attribute__((always_inline)) void writedata8_last(uint8_t c) - { - setDCForData(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - write8_last(c); - } - - // // Enables CS, sets DC to Data, writes 2 bytes - // // Does not disable CS - // __attribute__((always_inline)) - // void writedata16_cont(uint16_t d) { - // setDCForData(); - //#if SPI_MODE_NORMAL | SPI_MODE_DMA - // enableCS(); - //#endif - // write16_cont(d); - // } - // - // // Enables CS, sets DC to Data, writes 2 bytes, disables CS - // __attribute__((always_inline)) - // void writedata16_last(uint16_t d) { - // setDCForData(); - //#if SPI_MODE_NORMAL | SPI_MODE_DMA - // enableCS(); - //#endif - // write16_last(d); - // } - - //#ifdef ARDUINO_SAM_DUE - // Enables CS, sets DC and writes n-bytes from the buffer via DMA - // Does not disable CS - /*inline __attribute__((always_inline)) - void writedata_cont(const uint8_t* buf , uint32_t n) { - enableCS(); - setDCForData(); - dmaSend(buf, n); - }*/ - - // Enables CS, sets DC, writes n-bytes from the buffer via DMA, disables CS - /*inline __attribute__((always_inline)) - void writedata_last(const uint8_t* buf , uint32_t n) { - setDCForData(); - enableCS(); - dmaSend(buf, n); - disableCS(); - }*/ - - // Writes n-bytes from the buffer via DMA - // CS and DC have to be set prior to calling this method - // inline __attribute__((always_inline)) - // void write_cont(const uint8_t* buf, uint32_t n) { - //#if SPI_MODE_NORMAL - // spiTransfer(buf, n); - //#elif SPI_MODE_EXTENDED - // spiTransfer(_cs, buf, n, SPI_CONTINUE); - //#elif SPI_MODE_DMA - // dmaSend(buf, n); - //#endif - // } - - inline __attribute__((always_inline)) void write_cont(uint16_t *buf, uint32_t n) - { -#if SPI_MODE_NORMAL - spiTransfer(buf, n); -#elif SPI_MODE_EXTENDED - spiTransfer(_cs, buf, n, SPI_CONTINUE); -#elif SPI_MODE_DMA - dmaSend(buf, n); -#endif - } - - inline __attribute__((always_inline)) void write_cont(const uint16_t *buf, uint32_t n) - { -#if SPI_MODE_NORMAL - spiTransfer(buf, n); -#elif SPI_MODE_EXTENDED - spiTransfer(_cs, buf, n, SPI_CONTINUE); -#elif SPI_MODE_DMA - dmaSend(buf, n); -#endif - } - - inline __attribute__((always_inline)) void read_cont(uint8_t *buf, uint32_t n) - { -#if SPI_MODE_DMA - dmaReceive(buf, n); -#endif - } - - // Writes n-bytes from the buffer via DMA and disables CS - // DC has to be set prior to calling this method - /*inline __attribute__((always_inline)) - void write_last(const uint8_t* buf , uint32_t n) { - dmaSend(buf, n << 1); - disableCS(); - }*/ - - // inline __attribute__((always_inline)) - // void writeScanline(uint16_t d) { - // /*setDCForData(); - // enableCS();*/ - //#if SPI_MODE_NORMAL - // Serial.println(_scanlineCounter); - // if (_scanlineCounter == SCANLINE_BUFFER_SIZE) - // { - // spiTransfer(_scanline, SCANLINE_BUFFER_SIZE); - // _scanlineCounter = 0; - // } - // - // _scanline[_scanlineCounter++] = highByte(d); - // _scanline[_scanlineCounter++] = lowByte(d); - // - //#elif SPI_MODE_EXTENDED - // SPI.transfer(_cs, _scanline, n << 1, SPI_CONTINUE); - //#elif SPI_MODE_DMA - // dmaSend(_scanline, n << 1); // each pixel is 2 bytes - //#endif - // - // //dmaSend(_scanline, n); // DMA16 - // } - - // Writes n-bytes from the scanline buffer via DMA - // Does not disable CS - // inline __attribute__((always_inline)) - // void writeScanline(uint32_t n) { - // /*setDCForData(); - // enableCS();*/ - //#if SPI_MODE_NORMAL - // spiTransfer(_scanline, n); - //#elif SPI_MODE_EXTENDED - // SPI.transfer(_cs, _scanline, n << 1, SPI_CONTINUE); - //#elif SPI_MODE_DMA - // dmaSend(_scanline, n << 1); // each pixel is 2 bytes - //#endif - // - // //dmaSend(_scanline, n); // DMA16 - // } - - inline __attribute__((always_inline)) void writeScanline16(uint32_t n) - { - /*setDCForData(); - enableCS();*/ -#if SPI_MODE_NORMAL - spiTransfer(_scanline16, n); -#elif SPI_MODE_EXTENDED - spiTransfer(_cs, _scanline16, n, SPI_CONTINUE); -#elif SPI_MODE_DMA - dmaSend(_scanline16, n); // each pixel is 2 bytes -#endif - - //dmaSend(_scanline, n); // DMA16 - } - - inline __attribute__((always_inline)) void writeScanlineLooped(uint32_t n) - { - - if (n > SCANLINE_PIXEL_COUNT) - { - const uint32_t numLoops = n / (uint32_t)SCANLINE_PIXEL_COUNT; - for (uint32_t l = 0; l < numLoops; l++) - { - writeScanline16(SCANLINE_PIXEL_COUNT); - } - } - - uint16_t remainingPixels = n == SCANLINE_PIXEL_COUNT ? SCANLINE_PIXEL_COUNT : n % SCANLINE_PIXEL_COUNT; - if (remainingPixels > 0) - { - writeScanline16(remainingPixels); - } - } - - // writes n-bytes from the scanline buffer via DMA - // Does not enable CS nor sets DS nor disables CS - //inline __attribute__((always_inline)) - // void writeScanline_cont_noCS_noDC(uint32_t n) { - // dmaSend(_scanline, n << 1); // each pixel is 2 bytes - //} - - // Writes n-bytes from the scanline buffer via DMA and disabled CS - // inline __attribute__((always_inline)) - // void writeScanline_last(uint32_t n) { - //#if SPI_MODE_EXTENDED - // SPI.transfer(_cs, _scanline, n << 1, SPI_LAST); - //#elif SPI_MODE_DMA - // dmaSend(_scanline, n << 1); // each pixel is 2 bytes - // //dmaSend(_scanline, n); // DMA16 - // disableCS(); - //#endif - // } - - //#endif - - // Reads 1 byte - __attribute__((always_inline)) - uint8_t - read8_cont() - { -#if SPI_MODE_NORMAL - return SPI.transfer(ILI9341_NOP); -#elif SPI_MODE_EXTENDED - return SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); -#elif SPI_MODE_DMA - return dmaReceive(); -#endif - } - - __attribute__((always_inline)) - uint8_t - read8_last() - { -#if SPI_MODE_NORMAL - uint8_t r = SPI.transfer(ILI9341_NOP); - disableCS(); - return r; -#elif SPI_MODE_EXTENDED - return SPI.transfer(_cs, ILI9341_NOP, SPI_LAST); -#elif SPI_MODE_DMA - uint8_t r = dmaReceive(); - disableCS(); - return r; -#endif - } - - // Reads 2 bytes - __attribute__((always_inline)) - uint16_t - read16() - { -#if SPI_MODE_NORMAL - uint16_t r = SPI.transfer(ILI9341_NOP); - r <<= 8; - r |= SPI.transfer(ILI9341_NOP); -#elif SPI_MODE_EXTENDED - uint16_t r = SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); - r <<= 8; - r |= SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); -#elif SPI_MODE_DMA - uint16_t r = dmaReceive(); - r <<= 8; - r |= dmaReceive(); -#endif - return r; - } - - // Reads 2 bytes - __attribute__((always_inline)) - uint16_t - readPixel_start_cont() - { -#if SPI_MODE_NORMAL - uint16_t r = SPI.transfer(ILI9341_NOP); - r <<= 8; - r |= SPI.transfer(ILI9341_NOP); -#elif SPI_MODE_EXTENDED - uint16_t r = SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); - r <<= 8; - r |= SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); -#elif SPI_MODE_DMA - uint16_t r = dmaReceive(); - r <<= 8; - r |= dmaReceive(); -#endif - return r; - } - - // Enables CS, sets DC for Data and reads 1 byte - // Does not disable CS - __attribute__((always_inline)) - uint8_t - readdata8_cont() - { - setDCForData(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - return read8_cont(); - } - - // Enables CS, sets DC for Data, reads 1 byte and disables CS - __attribute__((always_inline)) - uint8_t - readdata8_last() - { - setDCForData(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - return read8_last(); - } - - // Enables CS, sets DC for Data and reads 2 bytes - // Does not disable CS - __attribute__((always_inline)) - uint16_t - readdata16_cont() - { - setDCForData(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - return read16(); - } - - // Enables CS, sets DC for Data, reads 2 bytes and disables CS - __attribute__((always_inline)) - uint8_t - readdata16_last() - { - setDCForData(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - enableCS(); -#endif - uint16_t r = read16(); -#if SPI_MODE_NORMAL | SPI_MODE_DMA - disableCS(); -#endif - //TOTRY - /*uint8_t buff[2]; // not tested yet - enableCS(); - dmaReceive(buff, 2); - disableCS(); - uint16_t r = makeWord(buff[1], buff[0]);*/ - - return r; - } - - //#if SPI_MODE_DMA | SPI_MODE_EXTENDED - //void fillScanline(uint8_t color) __attribute__((always_inline)) { - // //for(uint16_t i=0; i 0; --n, ++pdst, ++psrc) - // *pdst = *psrc; - - // return dst; - //} - - //#endif - - // Writes a sequence that will render a horizontal line - // CS must be set prior to calling this method - // for DMA mode, scanline buffer must be filled with the desired color - // Advantage over writeHLine_cont is that CS line is not being set and - // the scanlineBuffer not filled on every call - __attribute__((always_inline)) void writeHLine_cont_noCS_noFill(int16_t x, int16_t y, int16_t w) - { -#ifdef ARDUINO_ARCH_AVR - const uint32_t numLoops = (uint32_t)w / (uint32_t)SCANLINE_PIXEL_COUNT; - setAddrAndRW_cont(x, y, w, 1); - setDCForData(); - for (uint32_t l = 0; l < numLoops; l++) - { - writeScanline16(SCANLINE_PIXEL_COUNT); - } - uint16_t remainingPixels = w % SCANLINE_PIXEL_COUNT; - if (remainingPixels > 0) - writeScanline16(remainingPixels); -#elif defined ARDUINO_SAM_DUE - setAddrAndRW_cont(x, y, w, 1); - setDCForData(); - writeScanline16(w); -#endif - } - - __attribute__((always_inline)) void writeHLine_cont_noCS_noScanline(int16_t x, int16_t y, int16_t w, uint16_t color) - { - setAddrAndRW_cont(x, y, w, 1); - setDCForData(); - while (w-- > 0) - { - write16_cont(color); - } - } - - // Writes a sequence that will render a vertical line - // CS must be set prior to calling this method - // for DMA mode, scanline buffer must be filled with the desired color - // Advantage over writeVLine_cont is that CS line is not being set and - // the scanlineBuffer not filled on every call - __attribute__((always_inline)) void writeVLine_cont_noCS_noFill(int16_t x, int16_t y, int16_t h) - { -#ifdef ARDUINO_ARCH_AVR - const uint32_t numLoops = (uint32_t)h / (uint32_t)SCANLINE_PIXEL_COUNT; - setAddrAndRW_cont(x, y, 1, h); - setDCForData(); - for (uint32_t l = 0; l < numLoops; l++) - { - writeScanline16(SCANLINE_PIXEL_COUNT); - } - uint16_t remainingPixels = h % SCANLINE_PIXEL_COUNT; - if (remainingPixels > 0) - writeScanline16(remainingPixels); -#elif defined ARDUINO_SAM_DUE - setAddrAndRW_cont(x, y, 1, h); - setDCForData(); - writeScanline16(h); -#endif - } - - __attribute__((always_inline)) void writeVLine_cont_noCS_noScanline(int16_t x, int16_t y, int16_t h, uint16_t color) - { - setAddrAndRW_cont(x, y, 1, h); - setDCForData(); - while (h-- > 0) - { - write16_cont(color); - } - } - - inline __attribute__((always_inline)) void writePixel_cont(int16_t x, int16_t y, uint16_t color) - { - setAddrAndRW_cont_inline(x, y, 1, 1); - setDCForData(); - write16_cont(color); - } - - // Enables CS, writes a sequence that will render a pixel and disables CS - inline __attribute__((always_inline)) void writePixel_last(int16_t x, int16_t y, uint16_t color) - { - setAddrAndRW_cont(x, y, 1, 1); - setDCForData(); - write16_last(color); - } - -#ifdef ARDUINO_SAM_DUE - inline __attribute__((always_inline)) -#endif - void - drawPixel_cont(int16_t x, int16_t y, uint16_t color) - { - - if ((x < 0) || (x >= _width) || (y < 0) || (y >= _height)) - return; - writePixel_cont(x, y, color); - } - - inline __attribute__((always_inline)) void drawPixel_last(int16_t x, int16_t y, uint16_t color) - { - - if ((x < 0) || (x >= _width) || (y < 0) || (y >= _height)) - return; - writePixel_last(x, y, color); - } - - // Enables CS - inline __attribute__((always_inline)) void enableCS() - { -#if SPI_MODE_NORMAL | SPI_MODE_DMA - *_csport &= ~_cspinmask; -#endif - } - - // Disables CS - inline __attribute__((always_inline)) void disableCS() - { -#if SPI_MODE_NORMAL | SPI_MODE_DMA - *_csport |= _cspinmask; - //csport->PIO_SODR |= cspinmask; -#elif SPI_MODE_EXTENDED - writecommand_last(ILI9341_NOP); // have to send a byte to disable CS -#endif - } - - // Sets DC to Data (1) - inline __attribute__((always_inline)) void setDCForData() - { - *_dcport |= _dcpinmask; - //_dcport->PIO_SODR |= _dcpinmask; - } - - // Sets DC to Command (0) - inline __attribute__((always_inline)) void setDCForCommand() - { - *_dcport &= ~_dcpinmask; - } -#ifdef ARDUINO_ARCH_AVR - inline __attribute__((always_inline)) void spiTransfer(const uint8_t *buf, uint32_t count) - { - SPDR = *buf; - while (--count > 0) - { - uint8_t out = *(buf + 1); - while (!(SPSR & _BV(SPIF))) - ; - //uint8_t in = SPDR; - SPDR = out; - buf++; - } - while (!(SPSR & _BV(SPIF))) - ; - //*buf = SPDR; - } - - inline __attribute__((always_inline)) void spiTransfer(uint16_t *buf, uint32_t count) - { - uint16_t pixel = *buf; - SPDR = highByte(pixel); - while (!(SPSR & _BV(SPIF))) - ; - SPDR = lowByte(pixel); - while (--count > 0) - { - uint16_t out = *(buf + 1); - while (!(SPSR & _BV(SPIF))) - ; - //uint8_t in = SPDR; - SPDR = highByte(out); - while (!(SPSR & _BV(SPIF))) - ; - SPDR = lowByte(out); - buf++; - } - while (!(SPSR & _BV(SPIF))) - ; - //*buf = SPDR; - } - - void spiTransfer(const uint16_t *buf, uint32_t count) - { - uint16_t pixel = pgm_read_word(buf); - SPDR = highByte(pixel); - while (!(SPSR & _BV(SPIF))) - ; - SPDR = lowByte(pixel); - while (--count > 0) - { - uint16_t out = pgm_read_word(buf + 1); - while (!(SPSR & _BV(SPIF))) - ; - //uint8_t in = SPDR; - SPDR = highByte(out); - while (!(SPSR & _BV(SPIF))) - ; - SPDR = lowByte(out); - buf++; - } - while (!(SPSR & _BV(SPIF))) - ; - //*buf = SPDR; - } -#elif defined ARDUINO_SAM_DUE -#if SPI_MODE_NORMAL - void spiTransfer(uint8_t _data) - { - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); - uint32_t d = _data | SPI_PCS(ch); - d |= SPI_TDR_LASTXFER; - - // SPI_Write(spi, _channel, _data); - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d; - - // return SPI_Read(spi); - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - } - - void spiTransfer(uint16_t _data) - { - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); - - SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit - uint32_t d = _data | SPI_PCS(ch); - - d |= SPI_TDR_LASTXFER; - - // SPI_Write(spi, _channel, _data); - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d; - - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit - } - - void spiTransfer(const uint8_t *_buf, uint32_t _count) - { - if (_count == 0) - return; - - if (_count == 1) - { - spiTransfer(*_buf); - return; - } - - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); - - // Send the first byte - uint32_t d = *_buf; - - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - while (_count > 1) - { - // Prepare next byte - d = *(_buf + 1); - - if (_count == 2) - d |= SPI_TDR_LASTXFER; - - // Read transferred byte and send next one straight away - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - // Save read byte - - //*_buf = r; - _buf++; - _count--; - } - - // Receive the last transferred byte - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - //*_buf = r; - } - - void spiTransfer(const uint16_t *_buf, uint32_t _count) - { - if (_count == 0) - return; - - if (_count == 1) - { - spiTransfer(*_buf); - return; - } - - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); - - SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit - // Send the first byte - uint32_t d = *_buf; - - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - while (_count > 1) - { - // Prepare next byte - d = *(_buf + 1); - - if (_count == 2) - d |= SPI_TDR_LASTXFER; - - // Read transferred byte and send next one straight away - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - // Save read byte - - //*_buf = r; - _buf++; - _count--; - } - - // Receive the last transferred byte - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - //*_buf = r; - SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit - } -#elif SPI_MODE_EXTENDED - - void spiTransfer(byte _pin, const uint8_t *_buf, uint32_t _count, SPITransferMode _mode) - { - if (_count == 0) - return; - - if (_count == 1) - { - SPI.transfer(_pin, *_buf, _mode); - return; - } - - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(_pin); - - // Send the first byte - uint32_t d = *_buf; - - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - while (_count > 1) - { - // Prepare next byte - d = *(_buf + 1); - - if (_count == 2 && _mode == SPI_LAST) - d |= SPI_TDR_LASTXFER; - - // Read transferred byte and send next one straight away - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - // Save read byte - - //*_buf = r; - _buf++; - _count--; - } - - // Receive the last transferred byte - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - - //*_buf = r; - } - - void spiTransfer(byte _pin, uint16_t _data, SPITransferMode _mode) - { - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(_pin); - - SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit - uint32_t d = _data | SPI_PCS(ch); - if (_mode == SPI_LAST) - d |= SPI_TDR_LASTXFER; - - // SPI_Write(spi, _channel, _data); - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d; - - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit - } - - void spiTransfer(byte _pin, const uint16_t *_buf, uint32_t _count, SPITransferMode _mode) - { - if (_count == 0) - return; - - if (_count == 1) - { - spiTransfer(_pin, *_buf, _mode); - return; - } - - uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(_pin); - - SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit - // Send the first byte - uint32_t d = *_buf; - - while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) - ; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - while (_count > 1) - { - // Prepare next byte - d = *(_buf + 1); - - if (_count == 2 && _mode == SPI_LAST) - d |= SPI_TDR_LASTXFER; - - // Read transferred byte and send next one straight away - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - SPI0->SPI_TDR = d | SPI_PCS(ch); - - // Save read byte - - //*_buf = r; - _buf++; - _count--; - } - - // Receive the last transferred byte - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - ; - SPI0->SPI_RDR; - //*_buf = r; - SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit - } -#elif SPI_MODE_DMA - /** Use SAM3X DMAC if nonzero */ -#define ILI_USE_SAM3X_DMAC 1 - /** Use extra Bus Matrix arbitration fix if nonzero */ -#define ILI_USE_SAM3X_BUS_MATRIX_FIX 0 - /** Time in ms for DMA receive timeout */ -#define ILI_SAM3X_DMA_TIMEOUT 100 - /** chip select register number */ -#define ILI_SPI_CHIP_SEL 3 - /** DMAC receive channel */ -#define ILI_SPI_DMAC_RX_CH 1 - /** DMAC transmit channel */ -#define ILI_SPI_DMAC_TX_CH 0 - /** DMAC Channel HW Interface Number for SPI TX. */ -#define ILI_SPI_TX_IDX 1 - /** DMAC Channel HW Interface Number for SPI RX. */ -#define ILI_SPI_RX_IDX 2 - //------------------------------------------------------------------------------ - /** Disable DMA Controller. */ - static void dmac_disable() - { - DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); - } - /** Enable DMA Controller. */ - static void dmac_enable() - { - DMAC->DMAC_EN = DMAC_EN_ENABLE; - } - /** Disable DMA Channel. */ - static void dmac_channel_disable(uint32_t ul_num) - { - DMAC->DMAC_CHDR = DMAC_CHDR_DIS0 << ul_num; - } - /** Enable DMA Channel. */ - static void dmac_channel_enable(uint32_t ul_num) - { - DMAC->DMAC_CHER = DMAC_CHER_ENA0 << ul_num; - } - /** Poll for transfer complete. */ - static bool dmac_channel_transfer_done(uint32_t ul_num) - { - return (DMAC->DMAC_CHSR & (DMAC_CHSR_ENA0 << ul_num)) ? false : true; - } - - static void spi_set_16bit_transfer() - { - SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] = (SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] &= 0xFFFFFF0F) | 0x00000080; - } - - static void spi_set_8bit_transfer() - { - SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] &= 0xFFFFFF0F; - } - //------------------------------------------------------------------------------ - void dmaBegin() - { - PIO_Configure( - g_APinDescription[PIN_SPI_MOSI].pPort, - g_APinDescription[PIN_SPI_MOSI].ulPinType, - g_APinDescription[PIN_SPI_MOSI].ulPin, - g_APinDescription[PIN_SPI_MOSI].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PIN_SPI_MISO].pPort, - g_APinDescription[PIN_SPI_MISO].ulPinType, - g_APinDescription[PIN_SPI_MISO].ulPin, - g_APinDescription[PIN_SPI_MISO].ulPinConfiguration); - PIO_Configure( - g_APinDescription[PIN_SPI_SCK].pPort, - g_APinDescription[PIN_SPI_SCK].ulPinType, - g_APinDescription[PIN_SPI_SCK].ulPin, - g_APinDescription[PIN_SPI_SCK].ulPinConfiguration); - pmc_enable_periph_clk(ID_SPI0); -#if ILI_USE_SAM3X_DMAC - pmc_enable_periph_clk(ID_DMAC); - dmac_disable(); - DMAC->DMAC_GCFG = DMAC_GCFG_ARB_CFG_FIXED; - dmac_enable(); -#if ILI_USE_SAM3X_BUS_MATRIX_FIX - MATRIX->MATRIX_WPMR = 0x4d415400; - MATRIX->MATRIX_MCFG[1] = 1; - MATRIX->MATRIX_MCFG[2] = 1; - MATRIX->MATRIX_SCFG[0] = 0x01000010; - MATRIX->MATRIX_SCFG[1] = 0x01000010; - MATRIX->MATRIX_SCFG[7] = 0x01000010; -#endif // ILI_USE_SAM3X_BUS_MATRIX_FIX -#endif // ILI_USE_SAM3X_DMAC - } - //------------------------------------------------------------------------------ - // initialize SPI controller - void dmaInit(uint8_t sckDivisor) - { - uint8_t scbr = sckDivisor; - Spi *pSpi = SPI0; - // disable SPI - pSpi->SPI_CR = SPI_CR_SPIDIS; - // reset SPI - pSpi->SPI_CR = SPI_CR_SWRST; - // no mode fault detection, set master mode - pSpi->SPI_MR = SPI_PCS(ILI_SPI_CHIP_SEL) | SPI_MR_MODFDIS | SPI_MR_MSTR; - // mode 0, 8-bit, - pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(scbr) | SPI_CSR_NCPHA | SPI_CSR_BITS_8_BIT; - // enable SPI - pSpi->SPI_CR |= SPI_CR_SPIEN; - } - - void dmaInit16(uint8_t sckDivisor) - { - uint8_t scbr = sckDivisor; - Spi *pSpi = SPI0; - // disable SPI - pSpi->SPI_CR = SPI_CR_SPIDIS; - // reset SPI - pSpi->SPI_CR = SPI_CR_SWRST; - // no mode fault detection, set master mode - pSpi->SPI_MR = SPI_PCS(ILI_SPI_CHIP_SEL) | SPI_MR_MODFDIS | SPI_MR_MSTR; - // mode 0, 16-bit, - pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(scbr) | SPI_CSR_NCPHA | SPI_CSR_BITS_16_BIT; - // enable SPI - pSpi->SPI_CR |= SPI_CR_SPIEN; - } - //------------------------------------------------------------------------------ - // start RX DMA - void spiDmaRX(uint8_t *dst, uint16_t count) - { - dmac_channel_disable(ILI_SPI_DMAC_RX_CH); - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_SADDR = (uint32_t)&SPI0->SPI_RDR; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_DADDR = (uint32_t)dst; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | - DMAC_CTRLB_SRC_INCR_FIXED | DMAC_CTRLB_DST_INCR_INCREMENTING; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_CFG = DMAC_CFG_SRC_PER(ILI_SPI_RX_IDX) | - DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ASAP_CFG; - dmac_channel_enable(ILI_SPI_DMAC_RX_CH); - } - //------------------------------------------------------------------------------ - // start TX DMA - void spiDmaTX(const uint8_t *src, uint16_t count) - { - static uint8_t ff = 0XFF; - uint32_t src_incr = DMAC_CTRLB_SRC_INCR_INCREMENTING; - if (!src) - { - src = &ff; - src_incr = DMAC_CTRLB_SRC_INCR_FIXED; - } - dmac_channel_disable(ILI_SPI_DMAC_TX_CH); - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; - - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | - src_incr | DMAC_CTRLB_DST_INCR_FIXED; - - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(ILI_SPI_TX_IDX) | - DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; - - dmac_channel_enable(ILI_SPI_DMAC_TX_CH); - } - - void spiDmaTX16(const uint16_t *src, uint16_t count) - { - static uint16_t ff = 0XFFFF; - uint32_t src_incr = DMAC_CTRLB_SRC_INCR_INCREMENTING; - if (!src) - { - src = &ff; - src_incr = DMAC_CTRLB_SRC_INCR_FIXED; - } - dmac_channel_disable(ILI_SPI_DMAC_TX_CH); - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DSCR = 0; - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLA = count | - DMAC_CTRLA_SRC_WIDTH_HALF_WORD | DMAC_CTRLA_DST_WIDTH_HALF_WORD; - - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | - DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | - src_incr | DMAC_CTRLB_DST_INCR_FIXED; - - DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(ILI_SPI_TX_IDX) | - DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; - - dmac_channel_enable(ILI_SPI_DMAC_TX_CH); - } - //------------------------------------------------------------------------------ - __attribute__((always_inline)) - uint8_t - dmaSpiTransfer(uint8_t b) - { - Spi *pSpi = SPI0; - - pSpi->SPI_TDR = b; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) - { - } - b = pSpi->SPI_RDR; - return b; - } - - __attribute__((always_inline)) - uint16_t - dmaSpiTransfer(uint16_t w) - { - spi_set_16bit_transfer(); - SPI0->SPI_TDR = w; - while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) - { - } - w = SPI0->SPI_RDR; - spi_set_8bit_transfer(); - return w; - } - //------------------------------------------------------------------------------ - /** SPI receive a byte */ - __attribute__((always_inline)) - uint8_t - dmaReceive() - { - return dmaSpiTransfer((uint8_t)0XFF); - } - //------------------------------------------------------------------------------ - /** SPI receive multiple bytes */ - uint8_t dmaReceive(uint8_t *buf, uint32_t n) - { - Spi *pSpi = SPI0; - int rtn = 0; -#if ILI_USE_SAM3X_DMAC - // clear overrun error - pSpi->SPI_SR; - - spiDmaRX(buf, n); - spiDmaTX(0, n); - - uint32_t m = millis(); - while (!dmac_channel_transfer_done(ILI_SPI_DMAC_RX_CH)) - { - if ((millis() - m) > ILI_SAM3X_DMA_TIMEOUT) - { - dmac_channel_disable(ILI_SPI_DMAC_RX_CH); - dmac_channel_disable(ILI_SPI_DMAC_TX_CH); - rtn = 2; - break; - } - } - if (pSpi->SPI_SR & SPI_SR_OVRES) - rtn |= 1; -#else // ILI_USE_SAM3X_DMAC - for (uint32_t i = 0; i < n; i++) - { - pSpi->SPI_TDR = 0XFF; - while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) - { - } - buf[i] = pSpi->SPI_RDR; - } -#endif // ILI_USE_SAM3X_DMAC - return rtn; - } - //------------------------------------------------------------------------------ - /** SPI send a byte */ - __attribute__((always_inline)) void dmaSend(uint8_t b) - { - dmaSpiTransfer(b); - } - - __attribute__((always_inline)) void dmaSend(uint16_t w) - { - dmaSpiTransfer(w); - } - //------------------------------------------------------------------------------ - void dmaSend(const uint8_t *buf, uint32_t n) - { - Spi *pSpi = SPI0; - spiDmaTX(buf, n); - while (!dmac_channel_transfer_done(ILI_SPI_DMAC_TX_CH)) - { - } - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) - { - } - // leave RDR empty - pSpi->SPI_RDR; - } - - void dmaSend(const uint16_t *buf, uint32_t n) - { - Spi *pSpi = SPI0; - pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(_spiClkDivider) | SPI_CSR_NCPHA | SPI_CSR_BITS_16_BIT; - spiDmaTX16(buf, n); - while (!dmac_channel_transfer_done(ILI_SPI_DMAC_TX_CH)) - { - } - while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) - { - } - // leave RDR empty - pSpi->SPI_RDR; - pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(_spiClkDivider) | SPI_CSR_NCPHA | SPI_CSR_BITS_8_BIT; - } -#endif -#endif -}; - -#endif +/* +v1.01.008 + +ILI9341_due.h - Arduino Due library for interfacing with ILI9341-based TFTs + +Code: https://github.com/marekburiak/ILI9341_due +Documentation: http://marekburiak.github.io/ILI9341_due/ + +Copyright (c) 2015 Marek Buriak + +2.4 TFT Pin-out +T_IRQ T_DO T_DIN T_CS T_CLK MISO LED CLK MOSI DC RESET CS GND VCC + +This library is based on ILI9341_t3 library from Paul Stoffregen +(https://github.com/PaulStoffregen/ILI9341_t3), Adafruit_ILI9341 +and Adafruit_GFX libraries from Limor Fried/Ladyada +(https://github.com/adafruit/Adafruit_ILI9341). + +This file is part of the Arduino ILI9341_due library. +Sources for this library can be found at https://github.com/marekburiak/ILI9341_Due. + +ILI9341_due is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation, either version 2.1 of the License, or +(at your option) any later version. + +ILI9341_due is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License +along with ILI9341_due. If not, see . +*/ + +/*************************************************** +This is our library for the Adafruit ILI9341 Breakout and Shield +----> http://www.adafruit.com/products/1651 + +Check out the links above for our tutorials and wiring diagrams +These displays use SPI to communicate, 4 or 5 pins are required to +interface (RST is optional) +Adafruit invests time and resources providing this open source code, +please support Adafruit and open-source hardware by purchasing +products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +MIT license, all text above must be included in any redistribution +****************************************************/ + +#ifndef _ILI9341_dueH_ +#define _ILI9341_dueH_ + +#include +//#include "../Streaming/Streaming.h" + +#include "Arduino.h" + +#ifdef ARDUINO_ARCH_AVR +#include +#endif + +#ifdef ARDUINO_ARCH_AVR +#define SPI_MODE_NORMAL 1 +#define SPI_MODE_EXTENDED 0 +#define SPI_MODE_DMA 0 +#else +#ifndef ILI9341_SPI_MODE_NORMAL +#define SPI_MODE_NORMAL 0 +#else +#define SPI_MODE_NORMAL 1 +#endif + +#ifndef ILI9341_SPI_MODE_EXTENDED +#define SPI_MODE_EXTENDED 0 +#else +#define SPI_MODE_EXTENDED 1 +#endif + +#ifndef ILI9341_SPI_MODE_DMA +#define SPI_MODE_DMA 0 +#else +#define SPI_MODE_DMA 1 +#endif +#endif + +#if SPI_MODE_NORMAL | SPI_MODE_EXTENDED | defined(ILI_USE_SPI_TRANSACTION) +#include +#endif +#if SPI_MODE_DMA +#include +#endif + +#define ILI9341_TFTWIDTH 240 +#define ILI9341_TFTHEIGHT 320 + +#define ILI9341_NOP 0x00 +#define ILI9341_SWRESET 0x01 +#define ILI9341_RDDID 0x04 +#define ILI9341_RDDST 0x09 + +#define ILI9341_SLPIN 0x10 +#define ILI9341_SLPOUT 0x11 +#define ILI9341_PTLON 0x12 +#define ILI9341_NORON 0x13 + +#define ILI9341_RDMODE 0x0A +#define ILI9341_RDMADCTL 0x0B +#define ILI9341_RDPIXFMT 0x0C +#define ILI9341_RDIMGFMT 0x0D +#define ILI9341_RDDSPSGNMODE 0x0E +#define ILI9341_RDSELFDIAG 0x0F + +#define ILI9341_INVOFF 0x20 +#define ILI9341_INVON 0x21 +#define ILI9341_GAMMASET 0x26 +#define ILI9341_DISPOFF 0x28 +#define ILI9341_DISPON 0x29 + +#define ILI9341_CASET 0x2A +#define ILI9341_PASET 0x2B +#define ILI9341_RAMWR 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_PTLAR 0x30 +#define ILI9341_MADCTL 0x36 +#define ILI9341_IDMOFF 0x38 +#define ILI9341_IDMON 0x39 +#define ILI9341_PIXFMT 0x3A + +#define ILI9341_FRMCTR1 0xB1 +#define ILI9341_FRMCTR2 0xB2 +#define ILI9341_FRMCTR3 0xB3 +#define ILI9341_INVCTR 0xB4 +#define ILI9341_DFUNCTR 0xB6 + +#define ILI9341_PWCTR1 0xC0 +#define ILI9341_PWCTR2 0xC1 +#define ILI9341_PWCTR3 0xC2 +#define ILI9341_PWCTR4 0xC3 +#define ILI9341_PWCTR5 0xC4 +#define ILI9341_VMCTR1 0xC5 +#define ILI9341_VMCTR2 0xC7 + +#define ILI9341_RDID1 0xDA +#define ILI9341_RDID2 0xDB +#define ILI9341_RDID3 0xDC +#define ILI9341_RDID4 0xDD + +#define ILI9341_GMCTRP1 0xE0 +#define ILI9341_GMCTRN1 0xE1 +/* +#define ILI9341_PWCTR6 0xFC + +*/ + +// Color definitions +#define ILI9341_ALICEBLUE 0xF7DF +#define ILI9341_ANTIQUEWHITE 0xFF5A +#define ILI9341_AQUA 0x07FF +#define ILI9341_AQUAMARINE 0x7FFA +#define ILI9341_AZURE 0xF7FF +#define ILI9341_BEIGE 0xF7BB +#define ILI9341_BISQUE 0xFF38 +#define ILI9341_BLACK 0x0000 +#define ILI9341_BLANCHEDALMOND 0xFF59 +#define ILI9341_BLUE 0x001F +#define ILI9341_BLUEVIOLET 0x895C +#define ILI9341_BROWN 0xA145 +#define ILI9341_BURLYWOOD 0xDDD0 +#define ILI9341_CADETBLUE 0x5CF4 +#define ILI9341_CHARTREUSE 0x7FE0 +#define ILI9341_CHOCOLATE 0xD343 +#define ILI9341_CORAL 0xFBEA +#define ILI9341_CORNFLOWERBLUE 0x64BD +#define ILI9341_CORNSILK 0xFFDB +#define ILI9341_CRIMSON 0xD8A7 +#define ILI9341_CYAN 0x07FF +#define ILI9341_DARKBLUE 0x0011 +#define ILI9341_DARKCYAN 0x0451 +#define ILI9341_DARKGOLDENROD 0xBC21 +#define ILI9341_DARKGRAY 0xAD55 +#define ILI9341_DARKGREEN 0x0320 +#define ILI9341_DARKKHAKI 0xBDAD +#define ILI9341_DARKMAGENTA 0x8811 +#define ILI9341_DARKOLIVEGREEN 0x5345 +#define ILI9341_DARKORANGE 0xFC60 +#define ILI9341_DARKORCHID 0x9999 +#define ILI9341_DARKRED 0x8800 +#define ILI9341_DARKSALMON 0xECAF +#define ILI9341_DARKSEAGREEN 0x8DF1 +#define ILI9341_DARKSLATEBLUE 0x49F1 +#define ILI9341_DARKSLATEGRAY 0x2A69 +#define ILI9341_DARKTURQUOISE 0x067A +#define ILI9341_DARKVIOLET 0x901A +#define ILI9341_DEEPPINK 0xF8B2 +#define ILI9341_DEEPSKYBLUE 0x05FF +#define ILI9341_DIMGRAY 0x6B4D +#define ILI9341_DODGERBLUE 0x1C9F +#define ILI9341_FIREBRICK 0xB104 +#define ILI9341_FLORALWHITE 0xFFDE +#define ILI9341_FORESTGREEN 0x2444 +#define ILI9341_FUCHSIA 0xF81F +#define ILI9341_GAINSBORO 0xDEFB +#define ILI9341_GHOSTWHITE 0xFFDF +#define ILI9341_GOLD 0xFEA0 +#define ILI9341_GOLDENROD 0xDD24 +#define ILI9341_GRAY 0x8410 +#define ILI9341_GREEN 0x0400 +#define ILI9341_GREENYELLOW 0xAFE5 +#define ILI9341_HONEYDEW 0xF7FE +#define ILI9341_HOTPINK 0xFB56 +#define ILI9341_INDIANRED 0xCAEB +#define ILI9341_INDIGO 0x4810 +#define ILI9341_IVORY 0xFFFE +#define ILI9341_KHAKI 0xF731 +#define ILI9341_LAVENDER 0xE73F +#define ILI9341_LAVENDERBLUSH 0xFF9E +#define ILI9341_LAWNGREEN 0x7FE0 +#define ILI9341_LEMONCHIFFON 0xFFD9 +#define ILI9341_LIGHTBLUE 0xAEDC +#define ILI9341_LIGHTCORAL 0xF410 +#define ILI9341_LIGHTCYAN 0xE7FF +#define ILI9341_LIGHTGOLDENRODYELLOW 0xFFDA +#define ILI9341_LIGHTGREEN 0x9772 +#define ILI9341_LIGHTGREY 0xD69A +#define ILI9341_LIGHTPINK 0xFDB8 +#define ILI9341_LIGHTSALMON 0xFD0F +#define ILI9341_LIGHTSEAGREEN 0x2595 +#define ILI9341_LIGHTSKYBLUE 0x867F +#define ILI9341_LIGHTSLATEGRAY 0x7453 +#define ILI9341_LIGHTSTEELBLUE 0xB63B +#define ILI9341_LIGHTYELLOW 0xFFFC +#define ILI9341_LIME 0x07E0 +#define ILI9341_LIMEGREEN 0x3666 +#define ILI9341_LINEN 0xFF9C +#define ILI9341_MAGENTA 0xF81F +#define ILI9341_MAROON 0x8000 +#define ILI9341_MEDIUMAQUAMARINE 0x6675 +#define ILI9341_MEDIUMBLUE 0x0019 +#define ILI9341_MEDIUMORCHID 0xBABA +#define ILI9341_MEDIUMPURPLE 0x939B +#define ILI9341_MEDIUMSEAGREEN 0x3D8E +#define ILI9341_MEDIUMSLATEBLUE 0x7B5D +#define ILI9341_MEDIUMSPRINGGREEN 0x07D3 +#define ILI9341_MEDIUMTURQUOISE 0x4E99 +#define ILI9341_MEDIUMVIOLETRED 0xC0B0 +#define ILI9341_MIDNIGHTBLUE 0x18CE +#define ILI9341_MINTCREAM 0xF7FF +#define ILI9341_MISTYROSE 0xFF3C +#define ILI9341_MOCCASIN 0xFF36 +#define ILI9341_NAVAJOWHITE 0xFEF5 +#define ILI9341_NAVY 0x0010 +#define ILI9341_OLDLACE 0xFFBC +#define ILI9341_OLIVE 0x8400 +#define ILI9341_OLIVEDRAB 0x6C64 +#define ILI9341_ORANGE 0xFD20 +#define ILI9341_ORANGERED 0xFA20 +#define ILI9341_ORCHID 0xDB9A +#define ILI9341_PALEGOLDENROD 0xEF55 +#define ILI9341_PALEGREEN 0x9FD3 +#define ILI9341_PALETURQUOISE 0xAF7D +#define ILI9341_PALEVIOLETRED 0xDB92 +#define ILI9341_PAPAYAWHIP 0xFF7A +#define ILI9341_PEACHPUFF 0xFED7 +#define ILI9341_PERU 0xCC27 +#define ILI9341_PINK 0xFE19 +#define ILI9341_PLUM 0xDD1B +#define ILI9341_POWDERBLUE 0xB71C +#define ILI9341_PURPLE 0x8010 +#define ILI9341_RED 0xF800 +#define ILI9341_ROSYBROWN 0xBC71 +#define ILI9341_ROYALBLUE 0x435C +#define ILI9341_SADDLEBROWN 0x8A22 +#define ILI9341_SALMON 0xFC0E +#define ILI9341_SANDYBROWN 0xF52C +#define ILI9341_SEAGREEN 0x2C4A +#define ILI9341_SEASHELL 0xFFBD +#define ILI9341_SIENNA 0xA285 +#define ILI9341_SILVER 0xC618 +#define ILI9341_SKYBLUE 0x867D +#define ILI9341_SLATEBLUE 0x6AD9 +#define ILI9341_SLATEGRAY 0x7412 +#define ILI9341_SNOW 0xFFDF +#define ILI9341_SPRINGGREEN 0x07EF +#define ILI9341_STEELBLUE 0x4416 +#define ILI9341_TAN 0xD5B1 +#define ILI9341_TEAL 0x0410 +#define ILI9341_THISTLE 0xDDFB +#define ILI9341_TOMATO 0xFB08 +#define ILI9341_TURQUOISE 0x471A +#define ILI9341_VIOLET 0xEC1D +#define ILI9341_WHEAT 0xF6F6 +#define ILI9341_WHITE 0xFFFF +#define ILI9341_WHITESMOKE 0xF7BE +#define ILI9341_YELLOW 0xFFE0 +#define ILI9341_YELLOWGREEN 0x9E66 + +// Font Indices +#define GTEXT_FONT_LENGTH 0 +#define GTEXT_FONT_FIXED_WIDTH 2 +#define GTEXT_FONT_HEIGHT 3 +#define GTEXT_FONT_FIRST_CHAR 4 +#define GTEXT_FONT_CHAR_COUNT 5 +#define GTEXT_FONT_WIDTH_TABLE 6 + +typedef enum +{ + gTextFontModeSolid = 0, + gTextFontModeTransparent = 1 +} gTextFontMode; + +// the following returns true if the given font is fixed width +// zero length is flag indicating fixed width font (array does not contain width data entries) +#define isFixedWidthFont(font) (pgm_read_byte(font+GTEXT_FONT_LENGTH) == 0 && pgm_read_byte(font+GTEXT_FONT_LENGTH+1) == 0)) + +typedef enum +{ + gTextAlignTopLeft, + gTextAlignTopCenter, + gTextAlignTopRight, + gTextAlignMiddleLeft, + gTextAlignMiddleCenter, + gTextAlignMiddleRight, + gTextAlignBottomLeft, + gTextAlignBottomCenter, + gTextAlignBottomRight +} gTextAlign; + +typedef enum +{ + gTextPivotDefault, + gTextPivotTopLeft, + gTextPivotTopCenter, + gTextPivotTopRight, + gTextPivotMiddleLeft, + gTextPivotMiddleCenter, + gTextPivotMiddleRight, + gTextPivotBottomLeft, + gTextPivotBottomCenter, + gTextPivotBottomRight +} gTextPivot; + +typedef enum +{ + gTextEraseToEOL = 0x01, /**< Erase From cursor to end of Line */ + gTextEraseFromBOL = 0x02, /**< Erase From Beginning of Line to Cursor*/ + gTextEraseFullLine = 0x03 /**< Erase Entire line */ +} gTextEraseLine; + +typedef struct +{ + uint16_t x; + uint16_t y; + uint16_t w; + uint16_t h; +} gTextArea; + +typedef const uint8_t *gTextFont; + +typedef enum +{ + iliRotation0 = 0, + iliRotation90 = 1, + iliRotation180 = 2, + iliRotation270 = 3 +} iliRotation; + +typedef enum +{ + // Normal Mode On (full display) + // In this mode, the display is able to show maximum 262,144 colors. + pwrLevelNormal = 1, + // Idle Mode On + // In this mode, the full display area is used but with 8 colors. + pwrLevelIdle = 2, + // In this mode, the DC : DC converter, Internal oscillator and panel driver circuit are stopped. Only the MCU + // interface and memory works with VDDI power supply. Contents of the memory are safe. + pwrLevelSleep = 3 +} pwrLevel; + +#ifndef swap +#define swap(a, b) \ + { \ + typeof(a) t = a; \ + a = b; \ + b = t; \ + } +#endif + +#ifdef ARDUINO_SAM_DUE +#define SCANLINE_PIXEL_COUNT 320 +#elif defined ARDUINO_ARCH_AVR +#define SCANLINE_PIXEL_COUNT 16 +#endif + +#if SPI_MODE_DMA | SPI_MODE_EXTENDED +#define SCANLINE_BUFFER_SIZE SCANLINE_PIXEL_COUNT << 1 +#elif SPI_MODE_NORMAL +#define SCANLINE_BUFFER_SIZE SCANLINE_PIXEL_COUNT +#endif + +class ILI9341_due + : public Print +{ + protected: + int16_t _width, _height; // Display w/h as modified by current rotation + iliRotation _rotation; + + float _arcAngleMax; + int16_t _angleOffset; + + void fillArcOffsetted(uint16_t cx, uint16_t cy, uint16_t radius, uint16_t thickness, float startAngle, float endAngle, uint16_t color); + + void drawFastVLine_cont_noFill(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastVLine_noTrans(int16_t x, int16_t y, uint16_t h, uint16_t color); + void drawFastHLine_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t color); + void drawLine_noTrans(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); + void printHex8(uint8_t *data, uint8_t length); + void printHex16(uint16_t *data, uint8_t length); + void printHex32(uint32_t *data, uint8_t length); + + uint8_t _rst; + uint8_t _hiByte, _loByte; + bool _isIdle, _isInSleep; + uint16_t _color; + + uint16_t _scanline16[SCANLINE_PIXEL_COUNT]; + //#if SPI_MODE_DMA | SPI_MODE_EXTENDED + // uint8_t _scanline[SCANLINE_BUFFER_SIZE]; + // + //#elif SPI_MODE_NORMAL + // uint16_t _scanline[SCANLINE_BUFFER_SIZE]; + //#endif + + //uint16_t _scanlineCounter = 0; +#if SPI_MODE_DMA | SPI_MODE_EXTENDED + + //uint16_t _scanline[SCANLINE_BUFFER_SIZE]; // DMA16 +#endif + + uint8_t _spiClkDivider; +#ifdef ILI_USE_SPI_TRANSACTION + SPISettings _spiSettings; + uint8_t _transactionId; + bool _isInTransaction; +#endif + //Pio *_dcport; +#ifdef ARDUINO_SAM_DUE + volatile RwReg *_dcport; + uint32_t _cs, _dc, _dcpinmask; +#else + volatile uint8_t *_dcport, *_csport; + volatile uint8_t _dcport2; + uint8_t _cs, _dc, _cspinmask, _dcpinmask, _backupSPCR; +#endif + +#if SPI_MODE_NORMAL | SPI_MODE_DMA +#ifdef ARDUINO_SAM_DUE + //Pio *_csport; + volatile RwReg *_csport; + uint32_t _cspinmask; +#endif +#endif + + gTextFontMode _fontMode; + uint16_t _fontColor; + uint16_t _fontBgColor; + gTextFont _font; + gTextArea _area; + int16_t _x; + int16_t _xStart; + int16_t _y; + int16_t _yStart; + uint8_t _letterSpacing; + uint8_t _lineSpacing; + bool _isFirstChar; + //bool _needScroll; + //bool _wrap; + +#ifdef TEXT_SCALING_ENABLED + uint8_t _textScale; +#else +#define _textScale 1 +#endif + void fillRect_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); + void fillRectWithShader_noTrans(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t (*fillShader)(uint16_t rx, uint16_t ry)); + void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, uint16_t color); + void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color); + void pushColors_noTrans_noCS(const uint16_t *colors, uint16_t offset, uint32_t len); + + void specialChar(uint8_t c); + void drawSolidChar(char c, uint16_t index, uint16_t charWidth, uint16_t charHeight); + void drawTransparentChar(char c, uint16_t index, uint16_t charWidth, uint16_t charHeight); + void applyPivot(const char *str, gTextPivot pivot, gTextAlign align); + void applyPivot(const String &str, gTextPivot pivot, gTextAlign align); + void applyPivot(const __FlashStringHelper *str, gTextPivot pivot, gTextAlign align); + void applyAlignOffset(gTextAlign align, int16_t offsetX, int16_t offsetY); + void applyAlignPivotOffset(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); + void applyAlignPivotOffset(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); + void applyAlignPivotOffset(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); + void clearPixelsOnLeft(uint16_t pixelsToClearOnLeft); + void clearPixelsOnRight(uint16_t pixelsToClearOnRight); + + bool pinIsChipSelect(uint8_t cs); + + public: + ILI9341_due(uint8_t cs, uint8_t dc, uint8_t rst = 255); + + bool begin(void); + void getDisplayStatus(); + void fillScreen(uint16_t color); + void fillRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); + void fillRectWithShader(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t (*fillShader)(uint16_t rx, uint16_t ry)); + + void pushColor(uint16_t color); + void pushColors(const uint16_t *colors, uint16_t offset, uint32_t len); + void pushColors(uint16_t *colors, uint16_t offset, uint32_t len); + /*void pushColors565(uint8_t *colors, uint16_t offset, uint32_t len); + void pushColors565(const uint16_t *colors, uint16_t offset, uint32_t len);*/ + + void drawPixel(int16_t x, int16_t y, uint16_t color); + void drawFastVLine(int16_t x, int16_t y, uint16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, uint16_t w, uint16_t color); + void drawRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); + + void setRotation(iliRotation r); + void invertDisplay(boolean i); + void display(boolean d); + void sleep(boolean s); + void idle(boolean i); + void setPowerLevel(pwrLevel p); + void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); + void setAddrWindowRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h); + void setSPIClockDivider(uint8_t divider); + void setAngleOffset(int16_t angleOffset); + void setArcParams(float arcAngleMax); + + uint16_t readPixel(int16_t x, int16_t y); + void drawCircle(int16_t x, int16_t y, int16_t r, uint16_t color); + void fillCircle(int16_t x, int16_t y, int16_t r, uint16_t color); + void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); + void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color); + void drawRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t radius, uint16_t color); + void fillRoundRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t radius, uint16_t color); + void drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color); + void drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color, uint16_t bgcolor); + void drawImage(const uint16_t *colors, uint16_t x, uint16_t y, uint16_t w, uint16_t h); + uint8_t getRotation(void); + void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); + void drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t length, uint16_t color); + void drawLineByAngle(int16_t x, int16_t y, int16_t angle, uint16_t start, uint16_t length, uint16_t color); + + void screenshotToConsole(); + + void setTextArea(gTextArea area); + void setTextArea(int16_t x, int16_t y, int16_t w, int16_t h); //, textMode mode=DEFAULT_SCROLLDIR); + void setTextArea(int16_t x, int16_t y, int16_t columns, int16_t rows, gTextFont font); //, textMode mode=DEFAULT_SCROLLDIR); + gTextArea getTextArea() + { + return _area; + } + + void clearTextArea(); + void clearTextArea(gTextArea area); + void clearTextArea(uint16_t color); + void clearTextArea(gTextArea area, uint16_t color); + + // Font Functions + void setFont(gTextFont font); + gTextFont getFont() + { + return _font; + } + void setTextColor(uint16_t color); + void setTextColor(uint8_t R, uint8_t G, uint8_t B); + void setTextColor(uint16_t color, uint16_t backgroundColor); + void setTextColor(uint8_t R, uint8_t G, uint8_t B, uint8_t bgR, uint8_t bgG, uint8_t bgB); + uint16_t getTextColor() + { + return _fontColor; + } + + uint16_t getTextBackgroundColor() + { + return _fontBgColor; + } + + void setTextLetterSpacing(uint8_t letterSpacing); + uint8_t getTextLetterSpacing() + { + return _letterSpacing; + }; + + void setTextLineSpacing(uint8_t lineSpacing); + uint8_t getTextLineSpacing() + { + return _lineSpacing; + }; + + //void setTextWrap(bool wrap); + void setFontMode(gTextFontMode fontMode); + gTextFontMode getFontMode() + { + return _fontMode; + } + + void setTextScale(uint8_t textScale); + uint8_t getTextScale() + { + return _textScale; + } + + //void puts(const char *str); + //void puts(const String &str); + //void puts(const __FlashStringHelper* str); + + void printAt(const char *str, int16_t x, int16_t y); + void printAt(const String &str, int16_t x, int16_t y); + void printAt(const __FlashStringHelper *str, int16_t x, int16_t y); + + void printAt(const char *str, int16_t x, int16_t y, gTextEraseLine eraseLine); + void printAt(const String &str, int16_t x, int16_t y, gTextEraseLine eraseLine); + void printAt(const __FlashStringHelper *str, int16_t x, int16_t y, gTextEraseLine eraseLine); + + void printAt(const char *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAt(const String &str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAt(const __FlashStringHelper *str, int16_t x, int16_t y, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + + void printAtPivoted(const char *str, int16_t x, int16_t y, gTextPivot pivot); + void printAtPivoted(const String &str, int16_t x, int16_t y, gTextPivot pivot); + void printAtPivoted(const __FlashStringHelper *str, int16_t x, int16_t y, gTextPivot pivot); + + void printAligned(const char *str, gTextAlign align); + void printAligned(const String &str, gTextAlign align); + void printAligned(const __FlashStringHelper *str, gTextAlign align); + + void printAligned(const char *str, gTextAlign align, gTextEraseLine eraseLine); + void printAligned(const String &str, gTextAlign align, gTextEraseLine eraseLine); + void printAligned(const __FlashStringHelper *str, gTextAlign align, gTextEraseLine eraseLine); + + void printAligned(const char *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAligned(const String &str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAligned(const __FlashStringHelper *str, gTextAlign align, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + + void printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY); + void printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY); + void printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY); + + void printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); + void printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); + void printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); + + void printAlignedOffseted(const char *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAlignedOffseted(const String &str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAlignedOffseted(const __FlashStringHelper *str, gTextAlign align, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + + void printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot); + void printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot); + void printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot); + + void printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine); + void printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine); + void printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, gTextEraseLine eraseLine); + + void printAlignedPivoted(const char *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAlignedPivoted(const String &str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAlignedPivoted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + + void printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); + void printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); + void printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY); + + void printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); + void printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); + void printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, gTextEraseLine eraseLine); + + void printAlignedPivotedOffseted(const char *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAlignedPivotedOffseted(const String &str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + void printAlignedPivotedOffseted(const __FlashStringHelper *str, gTextAlign align, gTextPivot pivot, int16_t offsetX, int16_t offsetY, uint16_t pixelsClearedOnLeft, uint16_t pixelsClearedOnRight); + + void cursorTo(uint8_t column, uint8_t row); // 0 based coordinates for character columns and rows + void cursorTo(int8_t column); // move cursor on the current row + void cursorToXY(int16_t x, int16_t y); // coordinates relative to active text area + + __attribute__((always_inline)) + uint8_t + getFontHeight() + { + return pgm_read_byte(_font + GTEXT_FONT_HEIGHT); + }; + + __attribute__((always_inline)) static uint8_t getFontHeight(gTextFont font) + { + return pgm_read_byte(font + GTEXT_FONT_HEIGHT); + }; + + uint8_t readcommand8(uint8_t c) + { + writecommand_cont(0xD9); // woo sekret command? + writedata8_last(0x10); + writecommand_cont(c); + return readdata8_last(); + } + + // Pass 8-bit (each) R,G,B, get back 16-bit packed color + static uint16_t color565(uint8_t r, uint8_t g, uint8_t b) + { + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); + } + + int16_t width() + { + return _width; + } + + int16_t height() + { + return _height; + } + + virtual size_t write(uint8_t); + virtual size_t print(const __FlashStringHelper *); + virtual size_t print(const String &); + virtual size_t print(const char[]); + virtual size_t print(char); + virtual size_t print(unsigned char, int = DEC); + virtual size_t print(int, int = DEC); + virtual size_t print(unsigned int, int = DEC); + virtual size_t print(long, int = DEC); + virtual size_t print(unsigned long, int = DEC); + virtual size_t print(double, int = 2); + virtual size_t print(const Printable &); + + virtual size_t println(const __FlashStringHelper *); + virtual size_t println(const String &s); + virtual size_t println(const char[]); + virtual size_t println(char); + virtual size_t println(unsigned char, int = DEC); + virtual size_t println(int, int = DEC); + virtual size_t println(unsigned int, int = DEC); + virtual size_t println(long, int = DEC); + virtual size_t println(unsigned long, int = DEC); + virtual size_t println(double, int = 2); + virtual size_t println(const Printable &); + virtual size_t println(void); + + uint16_t getCharWidth(uint8_t c); + uint16_t getStringWidth(const char *str); + uint16_t getStringWidth(const __FlashStringHelper *str); + uint16_t getStringWidth(const String &str); + + void eraseTextLine(uint16_t color, gTextEraseLine type = gTextEraseToEOL); //ansi like line erase function + void eraseTextLine(uint16_t color, uint8_t row); // erase the entire text line in the given row and move cursor to left position + + int16_t getCursorX() + { + return _x; + } + + int16_t getCursorY() + { + return _y; + } + + static uint16_t getCharWidth(uint8_t c, gTextFont font, uint8_t textScale) + { + int16_t width = 0; + + if (isFixedWidthFont(font){ + width = (pgm_read_byte(font + GTEXT_FONT_FIXED_WIDTH)) * textScale; + } + else{ + // variable width font + uint8_t firstChar = pgm_read_byte(font + GTEXT_FONT_FIRST_CHAR); + uint8_t charCount = pgm_read_byte(font + GTEXT_FONT_CHAR_COUNT); + + // read width data + if (c >= firstChar && c < (firstChar + charCount)) + { + c -= firstChar; + width = (pgm_read_byte(font + GTEXT_FONT_WIDTH_TABLE + c)) * textScale; + } + } + return width; + }; + + static uint16_t getStringWidth(const char *str, gTextFont font, uint8_t letterSpacing, uint8_t textScale) + { + uint16_t width = 0; + + while (*str != 0) + { + width += getCharWidth(*str++, font, textScale) + letterSpacing * textScale; + } + if (width > 0) + width -= letterSpacing * textScale; + + return width; + }; + + inline __attribute__((always_inline)) void fillArc(uint16_t x, uint16_t y, uint16_t radius, uint16_t thickness, float start, float end, uint16_t color) + { + beginTransaction(); + if (start == 0 && end == _arcAngleMax) + fillArcOffsetted(x, y, radius, thickness, 0, _arcAngleMax, color); + else + fillArcOffsetted(x, y, radius, thickness, start + (_angleOffset / (float)360) * _arcAngleMax, end + (_angleOffset / (float)360) * _arcAngleMax, color); + endTransaction(); + } + + //int32_t cos_lookup(int32_t angle) + //{ + // float radians = (float)angle/_arcAngleMax * 2 * PI; + // //Serial << "COS_LOOKUP angle:" << (float)angle << " radians:" << radians << " cos:" << cos(radians) << " return: " << cos(radians) * (double)65535 << endl; + // return (cos(radians) * _arcAngleMax); + //} + + //int32_t sin_lookup(int32_t angle) + //{ + // float radians = (float)angle/_arcAngleMax * 2 * PI; + // //Serial << "SIN_LOOKUP angle:" << (float)angle << " radians:" << radians << " sin:" << sin(radians) << " return: " << sin(radians) * (double)65535 << endl; + // return (sin(radians) * _arcAngleMax); + //} + + float cosDegrees(float angle) + { + //float radians = angle / (float)360 * 2 * PI; + //Serial << "COS_LOOKUP angle:" << (float)angle << " radians:" << radians << " cos:" << cos(radians) << " return: " << cos(radians) * (double)65535 << endl; + return cos(angle * DEG_TO_RAD); + } + + float sinDegrees(float angle) + { + //float radians = angle / (float)360 * 2 * PI; + //Serial << "SIN_LOOKUP angle:" << (float)angle << " radians:" << radians << " sin:" << sin(radians) << " return: " << sin(radians) * (double)65535 << endl; + return sin(angle * DEG_TO_RAD); + } + + protected: + __attribute__((always_inline)) + uint16_t + scaledFontHeight() + { + return (uint16_t)(pgm_read_byte(_font + GTEXT_FONT_HEIGHT)) * (uint16_t)_textScale; + }; + + __attribute__((always_inline)) void beginTransaction() + { +#ifdef ILI_USE_SPI_TRANSACTION +#if defined ARDUINO_ARCH_AVR + SPI.beginTransaction(_spiSettings); +#elif defined(ARDUINO_SAM_DUE) +#if SPI_MODE_NORMAL + SPI.beginTransaction(_spiSettings); +#elif SPI_MODE_EXTENDED + SPI.beginTransaction(_cs, _spiSettings); +#elif SPI_MODE_DMA + SPI.beginTransaction(_spiSettings); + dmaInit(_spiClkDivider); +#endif +#endif +#endif + } + + __attribute__((always_inline)) void endTransaction() + { +#ifdef ILI_USE_SPI_TRANSACTION +#if defined ARDUINO_ARCH_AVR + SPI.endTransaction(); +#elif defined(ARDUINO_SAM_DUE) + SPI.endTransaction(); +#endif +#endif + } + + __attribute__((always_inline)) void spiwrite(uint8_t c) + { +#if defined ARDUINO_ARCH_AVR + SPDR = c; + asm volatile("nop"); + while (!(SPSR & _BV(SPIF))) + ; // wait +#elif defined(ARDUINO_SAM_DUE) +#if SPI_MODE_NORMAL + SPI.transfer(c); +#endif +#endif + } + + __attribute__((always_inline)) void spiwrite16(uint16_t d) + { +#if defined ARDUINO_ARCH_AVR + SPDR = highByte(d); + while (!(SPSR & _BV(SPIF))) + ; + SPDR = lowByte(d); + while (!(SPSR & _BV(SPIF))) + ; +#elif defined(ARDUINO_SAM_DUE) +#if SPI_MODE_NORMAL + SPI.transfer(highByte(d)); + SPI.transfer(lowByte(d)); +#endif +#endif + } + + // writes 1 byte + // CS and DC have to be set prior to calling this method + __attribute__((always_inline)) void write8_cont(uint8_t c) + { +#if SPI_MODE_NORMAL + spiwrite(c); +#elif SPI_MODE_EXTENDED + SPI.transfer(_cs, c, SPI_CONTINUE); +#elif SPI_MODE_DMA + dmaSend(c); +#endif + } + + // writes 1 byte and disables CS + // CS and DC have to be set prior to calling this method + inline __attribute__((always_inline)) void write8_last(uint8_t c) + { +#if SPI_MODE_NORMAL + spiwrite(c); + disableCS(); +#elif SPI_MODE_EXTENDED + SPI.transfer(_cs, c, SPI_LAST); +#elif SPI_MODE_DMA + dmaSend(c); + disableCS(); +#endif + } + + // Writes 2 bytes + // CS, DC have to be set prior to calling this method + __attribute__((always_inline)) void write16_cont(uint16_t d) + { +#if SPI_MODE_NORMAL + spiwrite16(d); +#elif SPI_MODE_EXTENDED + SPI.transfer(_cs, highByte(d), SPI_CONTINUE); + SPI.transfer(_cs, lowByte(d), SPI_CONTINUE); +#elif SPI_MODE_DMA + dmaSend(highByte(d)); + dmaSend(lowByte(d)); +#endif + } + + __attribute__((always_inline)) void write16_last(uint16_t d) + { +#if SPI_MODE_NORMAL + spiwrite16(d); + disableCS(); +#elif SPI_MODE_EXTENDED + SPI.transfer(_cs, highByte(d), SPI_CONTINUE); + SPI.transfer(_cs, lowByte(d), SPI_LAST); +#elif SPI_MODE_DMA + dmaSend(highByte(d)); + dmaSend(lowByte(d)); + disableCS(); +#endif + } + + // Writes commands to set the GRAM area where data/pixels will be written + void setAddr_cont(uint16_t x, uint16_t y, uint16_t w, uint16_t h) + __attribute__((always_inline)) + { + writecommand_cont(ILI9341_CASET); // Column addr set + setDCForData(); + write16_cont(x); // XSTART + write16_cont(x + w - 1); // XEND + writecommand_cont(ILI9341_PASET); // Row addr set + setDCForData(); + write16_cont(y); // YSTART + write16_cont(y + h - 1); // YEND + } + + //__attribute__((always_inline)) + //void setAddrAndRW_cont(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) + // { + // writecommand_cont(ILI9341_CASET); // Column addr set + // writedata16_cont(x0); // XSTART + // writedata16_cont(x1); // XEND + // writecommand_cont(ILI9341_PASET); // Row addr set + // writedata16_cont(y0); // YSTART + // writedata16_cont(y1); // YEND + // writecommand_cont(ILI9341_RAMWR); // write to RAM + //} + + // Enables CS, writes commands to set the GRAM area where data/pixels will be written + //__attribute__((always_inline)) + // void setAddr_cont(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) + //{ + // enableCS(); + // setDCForCommand(); + // write8_cont(ILI9341_CASET); // Column addr set + // setDCForData(); + // write16_cont(x0); // XSTART + // write16_cont(x1); // XEND + // setDCForCommand(); + // write8_cont(ILI9341_PASET); // Row addr set + // setDCForData(); + // write16_cont(y0); // XSTART + // write16_cont(y1); // XEND + //} + + // Enables CS, writes commands to set the GRAM area where data/pixels will be written + // Also sends RAM WRITE command which should be followed by writing data/pixels +#ifdef ARDUINO_SAM_DUE + inline __attribute__((always_inline)) +#endif + void + setAddrAndRW_cont(uint16_t x, uint16_t y, uint16_t w, uint16_t h) + { + setDCForCommand(); + write8_cont(ILI9341_CASET); // Column addr set + setDCForData(); + write16_cont(x); // XSTART + write16_cont(x + w - 1); // XEND + setDCForCommand(); + write8_cont(ILI9341_PASET); // Row addr set + setDCForData(); + write16_cont(y); // YSTART + write16_cont(y + h - 1); // YEND + setDCForCommand(); + write8_cont(ILI9341_RAMWR); // RAM write + } + + inline __attribute__((always_inline)) void setAddrAndRW_cont_inline(uint16_t x, uint16_t y, uint16_t w, uint16_t h) + { + setDCForCommand(); + write8_cont(ILI9341_CASET); // Column addr set + setDCForData(); + write16_cont(x); // XSTART + write16_cont(x + w - 1); // XEND + setDCForCommand(); + write8_cont(ILI9341_PASET); // Row addr set + setDCForData(); + write16_cont(y); // YSTART + write16_cont(y + h - 1); // YEND + setDCForCommand(); + write8_cont(ILI9341_RAMWR); // RAM write + } + +#ifdef ARDUINO_SAM_DUE + inline __attribute__((always_inline)) +#endif + void + setColumnAddr(uint16_t x, uint16_t w) + { + setDCForCommand(); + write8_cont(ILI9341_CASET); // Column addr set + setDCForData(); + write16_cont(x); // XSTART + write16_cont(x + w - 1); // XEND + } + +#ifdef ARDUINO_SAM_DUE + inline __attribute__((always_inline)) +#endif + void + setRowAddr(uint16_t y, uint16_t h) + { + setDCForCommand(); + write8_cont(ILI9341_PASET); // Row addr set + setDCForData(); + write16_cont(y); // YSTART + write16_cont(y + h - 1); // YEND + } + + inline __attribute__((always_inline)) void setRW() // RAM Write + { + setDCForCommand(); + write8_cont(ILI9341_RAMWR); // RAM write + } + + // Writes commands to set the GRAM area where data/pixels will be written + // Also sends RAM WRITE command which should be followed by writing data/pixels + // CS has to be enabled prior to calling this method + //__attribute__((always_inline)) + // void setAddrAndRW_cont_noCS(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) + //{ + // setDCForCommand(); + // write8_cont(ILI9341_CASET); // Column addr set + // setDCForData(); + // write16_cont(x0); // XSTART + // write16_cont(x1); // XEND + // setDCForCommand(); + // write8_cont(ILI9341_PASET); // Row addr set + // setDCForData(); + // write16_cont(y0); // XSTART + // write16_cont(y1); // XEND + // setDCForCommand(); + // write8_cont(ILI9341_RAMWR); // Row addr set + //} + + // Enables CS, sets DC for Command, writes 1 byte + // Does not disable CS + // __attribute__((always_inline)) + // void writecommand_cont(uint8_t c) { + // setDCForCommand(); + //#if SPI_MODE_NORMAL + // enableCS(); + // SPI.transfer(c); + //#elif SPI_MODE_EXTENDED + // SPI.transfer(_cs, c, SPI_CONTINUE); + //#elif SPI_MODE_DMA + // enableCS(); + // dmaSend(c); + //#endif + // } + + // Enables CS, sets DC for Command, writes 1 byte + // Does not disable CS + inline __attribute__((always_inline)) void writecommand_cont(uint8_t c) + { + setDCForCommand(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + write8_cont(c); + } + + // Enables CS, sets DC for Command, writes 1 byte, disables CS + inline __attribute__((always_inline)) void writecommand_last(uint8_t c) + { + setDCForCommand(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + write8_last(c); + } + + // Enables CS, sets DC to Data, writes 1 byte + // Does not disable CS + inline __attribute__((always_inline)) void writedata8_cont(uint8_t c) + { + setDCForData(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + write8_cont(c); + } + + // Enables CS, sets DC to Data, writes 1 byte, disables CS + __attribute__((always_inline)) void writedata8_last(uint8_t c) + { + setDCForData(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + write8_last(c); + } + + // // Enables CS, sets DC to Data, writes 2 bytes + // // Does not disable CS + // __attribute__((always_inline)) + // void writedata16_cont(uint16_t d) { + // setDCForData(); + //#if SPI_MODE_NORMAL | SPI_MODE_DMA + // enableCS(); + //#endif + // write16_cont(d); + // } + // + // // Enables CS, sets DC to Data, writes 2 bytes, disables CS + // __attribute__((always_inline)) + // void writedata16_last(uint16_t d) { + // setDCForData(); + //#if SPI_MODE_NORMAL | SPI_MODE_DMA + // enableCS(); + //#endif + // write16_last(d); + // } + + //#ifdef ARDUINO_SAM_DUE + // Enables CS, sets DC and writes n-bytes from the buffer via DMA + // Does not disable CS + /*inline __attribute__((always_inline)) + void writedata_cont(const uint8_t* buf , uint32_t n) { + enableCS(); + setDCForData(); + dmaSend(buf, n); + }*/ + + // Enables CS, sets DC, writes n-bytes from the buffer via DMA, disables CS + /*inline __attribute__((always_inline)) + void writedata_last(const uint8_t* buf , uint32_t n) { + setDCForData(); + enableCS(); + dmaSend(buf, n); + disableCS(); + }*/ + + // Writes n-bytes from the buffer via DMA + // CS and DC have to be set prior to calling this method + // inline __attribute__((always_inline)) + // void write_cont(const uint8_t* buf, uint32_t n) { + //#if SPI_MODE_NORMAL + // spiTransfer(buf, n); + //#elif SPI_MODE_EXTENDED + // spiTransfer(_cs, buf, n, SPI_CONTINUE); + //#elif SPI_MODE_DMA + // dmaSend(buf, n); + //#endif + // } + + inline __attribute__((always_inline)) void write_cont(uint16_t *buf, uint32_t n) + { +#if SPI_MODE_NORMAL + spiTransfer(buf, n); +#elif SPI_MODE_EXTENDED + spiTransfer(_cs, buf, n, SPI_CONTINUE); +#elif SPI_MODE_DMA + dmaSend(buf, n); +#endif + } + + inline __attribute__((always_inline)) void write_cont(const uint16_t *buf, uint32_t n) + { +#if SPI_MODE_NORMAL + spiTransfer(buf, n); +#elif SPI_MODE_EXTENDED + spiTransfer(_cs, buf, n, SPI_CONTINUE); +#elif SPI_MODE_DMA + dmaSend(buf, n); +#endif + } + + inline __attribute__((always_inline)) void read_cont(uint8_t *buf, uint32_t n) + { +#if SPI_MODE_DMA + dmaReceive(buf, n); +#endif + } + + // Writes n-bytes from the buffer via DMA and disables CS + // DC has to be set prior to calling this method + /*inline __attribute__((always_inline)) + void write_last(const uint8_t* buf , uint32_t n) { + dmaSend(buf, n << 1); + disableCS(); + }*/ + + // inline __attribute__((always_inline)) + // void writeScanline(uint16_t d) { + // /*setDCForData(); + // enableCS();*/ + //#if SPI_MODE_NORMAL + // Serial.println(_scanlineCounter); + // if (_scanlineCounter == SCANLINE_BUFFER_SIZE) + // { + // spiTransfer(_scanline, SCANLINE_BUFFER_SIZE); + // _scanlineCounter = 0; + // } + // + // _scanline[_scanlineCounter++] = highByte(d); + // _scanline[_scanlineCounter++] = lowByte(d); + // + //#elif SPI_MODE_EXTENDED + // SPI.transfer(_cs, _scanline, n << 1, SPI_CONTINUE); + //#elif SPI_MODE_DMA + // dmaSend(_scanline, n << 1); // each pixel is 2 bytes + //#endif + // + // //dmaSend(_scanline, n); // DMA16 + // } + + // Writes n-bytes from the scanline buffer via DMA + // Does not disable CS + // inline __attribute__((always_inline)) + // void writeScanline(uint32_t n) { + // /*setDCForData(); + // enableCS();*/ + //#if SPI_MODE_NORMAL + // spiTransfer(_scanline, n); + //#elif SPI_MODE_EXTENDED + // SPI.transfer(_cs, _scanline, n << 1, SPI_CONTINUE); + //#elif SPI_MODE_DMA + // dmaSend(_scanline, n << 1); // each pixel is 2 bytes + //#endif + // + // //dmaSend(_scanline, n); // DMA16 + // } + + inline __attribute__((always_inline)) void writeScanline16(uint32_t n) + { + /*setDCForData(); + enableCS();*/ +#if SPI_MODE_NORMAL + spiTransfer(_scanline16, n); +#elif SPI_MODE_EXTENDED + spiTransfer(_cs, _scanline16, n, SPI_CONTINUE); +#elif SPI_MODE_DMA + dmaSend(_scanline16, n); // each pixel is 2 bytes +#endif + + //dmaSend(_scanline, n); // DMA16 + } + + inline __attribute__((always_inline)) void writeScanlineLooped(uint32_t n) + { + + if (n > SCANLINE_PIXEL_COUNT) + { + const uint32_t numLoops = n / (uint32_t)SCANLINE_PIXEL_COUNT; + for (uint32_t l = 0; l < numLoops; l++) + { + writeScanline16(SCANLINE_PIXEL_COUNT); + } + } + + uint16_t remainingPixels = n == SCANLINE_PIXEL_COUNT ? SCANLINE_PIXEL_COUNT : n % SCANLINE_PIXEL_COUNT; + if (remainingPixels > 0) + { + writeScanline16(remainingPixels); + } + } + + // writes n-bytes from the scanline buffer via DMA + // Does not enable CS nor sets DS nor disables CS + //inline __attribute__((always_inline)) + // void writeScanline_cont_noCS_noDC(uint32_t n) { + // dmaSend(_scanline, n << 1); // each pixel is 2 bytes + //} + + // Writes n-bytes from the scanline buffer via DMA and disabled CS + // inline __attribute__((always_inline)) + // void writeScanline_last(uint32_t n) { + //#if SPI_MODE_EXTENDED + // SPI.transfer(_cs, _scanline, n << 1, SPI_LAST); + //#elif SPI_MODE_DMA + // dmaSend(_scanline, n << 1); // each pixel is 2 bytes + // //dmaSend(_scanline, n); // DMA16 + // disableCS(); + //#endif + // } + + //#endif + + // Reads 1 byte + __attribute__((always_inline)) + uint8_t + read8_cont() + { +#if SPI_MODE_NORMAL + return SPI.transfer(ILI9341_NOP); +#elif SPI_MODE_EXTENDED + return SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); +#elif SPI_MODE_DMA + return dmaReceive(); +#endif + } + + __attribute__((always_inline)) + uint8_t + read8_last() + { +#if SPI_MODE_NORMAL + uint8_t r = SPI.transfer(ILI9341_NOP); + disableCS(); + return r; +#elif SPI_MODE_EXTENDED + return SPI.transfer(_cs, ILI9341_NOP, SPI_LAST); +#elif SPI_MODE_DMA + uint8_t r = dmaReceive(); + disableCS(); + return r; +#endif + } + + // Reads 2 bytes + __attribute__((always_inline)) + uint16_t + read16() + { +#if SPI_MODE_NORMAL + uint16_t r = SPI.transfer(ILI9341_NOP); + r <<= 8; + r |= SPI.transfer(ILI9341_NOP); +#elif SPI_MODE_EXTENDED + uint16_t r = SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); + r <<= 8; + r |= SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); +#elif SPI_MODE_DMA + uint16_t r = dmaReceive(); + r <<= 8; + r |= dmaReceive(); +#endif + return r; + } + + // Reads 2 bytes + __attribute__((always_inline)) + uint16_t + readPixel_start_cont() + { +#if SPI_MODE_NORMAL + uint16_t r = SPI.transfer(ILI9341_NOP); + r <<= 8; + r |= SPI.transfer(ILI9341_NOP); +#elif SPI_MODE_EXTENDED + uint16_t r = SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); + r <<= 8; + r |= SPI.transfer(_cs, ILI9341_NOP, SPI_CONTINUE); +#elif SPI_MODE_DMA + uint16_t r = dmaReceive(); + r <<= 8; + r |= dmaReceive(); +#endif + return r; + } + + // Enables CS, sets DC for Data and reads 1 byte + // Does not disable CS + __attribute__((always_inline)) + uint8_t + readdata8_cont() + { + setDCForData(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + return read8_cont(); + } + + // Enables CS, sets DC for Data, reads 1 byte and disables CS + __attribute__((always_inline)) + uint8_t + readdata8_last() + { + setDCForData(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + return read8_last(); + } + + // Enables CS, sets DC for Data and reads 2 bytes + // Does not disable CS + __attribute__((always_inline)) + uint16_t + readdata16_cont() + { + setDCForData(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + return read16(); + } + + // Enables CS, sets DC for Data, reads 2 bytes and disables CS + __attribute__((always_inline)) + uint8_t + readdata16_last() + { + setDCForData(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + enableCS(); +#endif + uint16_t r = read16(); +#if SPI_MODE_NORMAL | SPI_MODE_DMA + disableCS(); +#endif + //TOTRY + /*uint8_t buff[2]; // not tested yet + enableCS(); + dmaReceive(buff, 2); + disableCS(); + uint16_t r = makeWord(buff[1], buff[0]);*/ + + return r; + } + + //#if SPI_MODE_DMA | SPI_MODE_EXTENDED + //void fillScanline(uint8_t color) __attribute__((always_inline)) { + // //for(uint16_t i=0; i 0; --n, ++pdst, ++psrc) + // *pdst = *psrc; + + // return dst; + //} + + //#endif + + // Writes a sequence that will render a horizontal line + // CS must be set prior to calling this method + // for DMA mode, scanline buffer must be filled with the desired color + // Advantage over writeHLine_cont is that CS line is not being set and + // the scanlineBuffer not filled on every call + __attribute__((always_inline)) void writeHLine_cont_noCS_noFill(int16_t x, int16_t y, int16_t w) + { +#ifdef ARDUINO_ARCH_AVR + const uint32_t numLoops = (uint32_t)w / (uint32_t)SCANLINE_PIXEL_COUNT; + setAddrAndRW_cont(x, y, w, 1); + setDCForData(); + for (uint32_t l = 0; l < numLoops; l++) + { + writeScanline16(SCANLINE_PIXEL_COUNT); + } + uint16_t remainingPixels = w % SCANLINE_PIXEL_COUNT; + if (remainingPixels > 0) + writeScanline16(remainingPixels); +#elif defined ARDUINO_SAM_DUE + setAddrAndRW_cont(x, y, w, 1); + setDCForData(); + writeScanline16(w); +#endif + } + + __attribute__((always_inline)) void writeHLine_cont_noCS_noScanline(int16_t x, int16_t y, int16_t w, uint16_t color) + { + setAddrAndRW_cont(x, y, w, 1); + setDCForData(); + while (w-- > 0) + { + write16_cont(color); + } + } + + // Writes a sequence that will render a vertical line + // CS must be set prior to calling this method + // for DMA mode, scanline buffer must be filled with the desired color + // Advantage over writeVLine_cont is that CS line is not being set and + // the scanlineBuffer not filled on every call + __attribute__((always_inline)) void writeVLine_cont_noCS_noFill(int16_t x, int16_t y, int16_t h) + { +#ifdef ARDUINO_ARCH_AVR + const uint32_t numLoops = (uint32_t)h / (uint32_t)SCANLINE_PIXEL_COUNT; + setAddrAndRW_cont(x, y, 1, h); + setDCForData(); + for (uint32_t l = 0; l < numLoops; l++) + { + writeScanline16(SCANLINE_PIXEL_COUNT); + } + uint16_t remainingPixels = h % SCANLINE_PIXEL_COUNT; + if (remainingPixels > 0) + writeScanline16(remainingPixels); +#elif defined ARDUINO_SAM_DUE + setAddrAndRW_cont(x, y, 1, h); + setDCForData(); + writeScanline16(h); +#endif + } + + __attribute__((always_inline)) void writeVLine_cont_noCS_noScanline(int16_t x, int16_t y, int16_t h, uint16_t color) + { + setAddrAndRW_cont(x, y, 1, h); + setDCForData(); + while (h-- > 0) + { + write16_cont(color); + } + } + + inline __attribute__((always_inline)) void writePixel_cont(int16_t x, int16_t y, uint16_t color) + { + setAddrAndRW_cont_inline(x, y, 1, 1); + setDCForData(); + write16_cont(color); + } + + // Enables CS, writes a sequence that will render a pixel and disables CS + inline __attribute__((always_inline)) void writePixel_last(int16_t x, int16_t y, uint16_t color) + { + setAddrAndRW_cont(x, y, 1, 1); + setDCForData(); + write16_last(color); + } + +#ifdef ARDUINO_SAM_DUE + inline __attribute__((always_inline)) +#endif + void + drawPixel_cont(int16_t x, int16_t y, uint16_t color) + { + + if ((x < 0) || (x >= _width) || (y < 0) || (y >= _height)) + return; + writePixel_cont(x, y, color); + } + + inline __attribute__((always_inline)) void drawPixel_last(int16_t x, int16_t y, uint16_t color) + { + + if ((x < 0) || (x >= _width) || (y < 0) || (y >= _height)) + return; + writePixel_last(x, y, color); + } + + // Enables CS + inline __attribute__((always_inline)) void enableCS() + { +#if SPI_MODE_NORMAL | SPI_MODE_DMA + *_csport &= ~_cspinmask; +#endif + } + + // Disables CS + inline __attribute__((always_inline)) void disableCS() + { +#if SPI_MODE_NORMAL | SPI_MODE_DMA + *_csport |= _cspinmask; + //csport->PIO_SODR |= cspinmask; +#elif SPI_MODE_EXTENDED + writecommand_last(ILI9341_NOP); // have to send a byte to disable CS +#endif + } + + // Sets DC to Data (1) + inline __attribute__((always_inline)) void setDCForData() + { + *_dcport |= _dcpinmask; + //_dcport->PIO_SODR |= _dcpinmask; + } + + // Sets DC to Command (0) + inline __attribute__((always_inline)) void setDCForCommand() + { + *_dcport &= ~_dcpinmask; + } +#ifdef ARDUINO_ARCH_AVR + inline __attribute__((always_inline)) void spiTransfer(const uint8_t *buf, uint32_t count) + { + SPDR = *buf; + while (--count > 0) + { + uint8_t out = *(buf + 1); + while (!(SPSR & _BV(SPIF))) + ; + //uint8_t in = SPDR; + SPDR = out; + buf++; + } + while (!(SPSR & _BV(SPIF))) + ; + //*buf = SPDR; + } + + inline __attribute__((always_inline)) void spiTransfer(uint16_t *buf, uint32_t count) + { + uint16_t pixel = *buf; + SPDR = highByte(pixel); + while (!(SPSR & _BV(SPIF))) + ; + SPDR = lowByte(pixel); + while (--count > 0) + { + uint16_t out = *(buf + 1); + while (!(SPSR & _BV(SPIF))) + ; + //uint8_t in = SPDR; + SPDR = highByte(out); + while (!(SPSR & _BV(SPIF))) + ; + SPDR = lowByte(out); + buf++; + } + while (!(SPSR & _BV(SPIF))) + ; + //*buf = SPDR; + } + + void spiTransfer(const uint16_t *buf, uint32_t count) + { + uint16_t pixel = pgm_read_word(buf); + SPDR = highByte(pixel); + while (!(SPSR & _BV(SPIF))) + ; + SPDR = lowByte(pixel); + while (--count > 0) + { + uint16_t out = pgm_read_word(buf + 1); + while (!(SPSR & _BV(SPIF))) + ; + //uint8_t in = SPDR; + SPDR = highByte(out); + while (!(SPSR & _BV(SPIF))) + ; + SPDR = lowByte(out); + buf++; + } + while (!(SPSR & _BV(SPIF))) + ; + //*buf = SPDR; + } +#elif defined ARDUINO_SAM_DUE +#if SPI_MODE_NORMAL + void spiTransfer(uint8_t _data) + { + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); + uint32_t d = _data | SPI_PCS(ch); + d |= SPI_TDR_LASTXFER; + + // SPI_Write(spi, _channel, _data); + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d; + + // return SPI_Read(spi); + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + } + + void spiTransfer(uint16_t _data) + { + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); + + SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit + uint32_t d = _data | SPI_PCS(ch); + + d |= SPI_TDR_LASTXFER; + + // SPI_Write(spi, _channel, _data); + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d; + + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit + } + + void spiTransfer(const uint8_t *_buf, uint32_t _count) + { + if (_count == 0) + return; + + if (_count == 1) + { + spiTransfer(*_buf); + return; + } + + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); + + // Send the first byte + uint32_t d = *_buf; + + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + while (_count > 1) + { + // Prepare next byte + d = *(_buf + 1); + + if (_count == 2) + d |= SPI_TDR_LASTXFER; + + // Read transferred byte and send next one straight away + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + // Save read byte + + //*_buf = r; + _buf++; + _count--; + } + + // Receive the last transferred byte + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + //*_buf = r; + } + + void spiTransfer(const uint16_t *_buf, uint32_t _count) + { + if (_count == 0) + return; + + if (_count == 1) + { + spiTransfer(*_buf); + return; + } + + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(BOARD_SPI_DEFAULT_SS); + + SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit + // Send the first byte + uint32_t d = *_buf; + + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + while (_count > 1) + { + // Prepare next byte + d = *(_buf + 1); + + if (_count == 2) + d |= SPI_TDR_LASTXFER; + + // Read transferred byte and send next one straight away + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + // Save read byte + + //*_buf = r; + _buf++; + _count--; + } + + // Receive the last transferred byte + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + //*_buf = r; + SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit + } +#elif SPI_MODE_EXTENDED + + void spiTransfer(byte _pin, const uint8_t *_buf, uint32_t _count, SPITransferMode _mode) + { + if (_count == 0) + return; + + if (_count == 1) + { + SPI.transfer(_pin, *_buf, _mode); + return; + } + + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(_pin); + + // Send the first byte + uint32_t d = *_buf; + + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + while (_count > 1) + { + // Prepare next byte + d = *(_buf + 1); + + if (_count == 2 && _mode == SPI_LAST) + d |= SPI_TDR_LASTXFER; + + // Read transferred byte and send next one straight away + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + // Save read byte + + //*_buf = r; + _buf++; + _count--; + } + + // Receive the last transferred byte + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + + //*_buf = r; + } + + void spiTransfer(byte _pin, uint16_t _data, SPITransferMode _mode) + { + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(_pin); + + SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit + uint32_t d = _data | SPI_PCS(ch); + if (_mode == SPI_LAST) + d |= SPI_TDR_LASTXFER; + + // SPI_Write(spi, _channel, _data); + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d; + + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit + } + + void spiTransfer(byte _pin, const uint16_t *_buf, uint32_t _count, SPITransferMode _mode) + { + if (_count == 0) + return; + + if (_count == 1) + { + spiTransfer(_pin, *_buf, _mode); + return; + } + + uint32_t ch = BOARD_PIN_TO_SPI_CHANNEL(_pin); + + SPI0->SPI_CSR[ch] = (SPI0->SPI_CSR[ch] &= 0xFFFFFF0F) | 0x00000080; //set 16 bit + // Send the first byte + uint32_t d = *_buf; + + while ((SPI0->SPI_SR & SPI_SR_TDRE) == 0) + ; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + while (_count > 1) + { + // Prepare next byte + d = *(_buf + 1); + + if (_count == 2 && _mode == SPI_LAST) + d |= SPI_TDR_LASTXFER; + + // Read transferred byte and send next one straight away + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + SPI0->SPI_TDR = d | SPI_PCS(ch); + + // Save read byte + + //*_buf = r; + _buf++; + _count--; + } + + // Receive the last transferred byte + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + ; + SPI0->SPI_RDR; + //*_buf = r; + SPI0->SPI_CSR[ch] &= 0xFFFFFF0F; //restore 8bit + } +#elif SPI_MODE_DMA + /** Use SAM3X DMAC if nonzero */ +#define ILI_USE_SAM3X_DMAC 1 + /** Use extra Bus Matrix arbitration fix if nonzero */ +#define ILI_USE_SAM3X_BUS_MATRIX_FIX 0 + /** Time in ms for DMA receive timeout */ +#define ILI_SAM3X_DMA_TIMEOUT 100 + /** chip select register number */ +#define ILI_SPI_CHIP_SEL 3 + /** DMAC receive channel */ +#define ILI_SPI_DMAC_RX_CH 1 + /** DMAC transmit channel */ +#define ILI_SPI_DMAC_TX_CH 0 + /** DMAC Channel HW Interface Number for SPI TX. */ +#define ILI_SPI_TX_IDX 1 + /** DMAC Channel HW Interface Number for SPI RX. */ +#define ILI_SPI_RX_IDX 2 + //------------------------------------------------------------------------------ + /** Disable DMA Controller. */ + static void dmac_disable() + { + DMAC->DMAC_EN &= (~DMAC_EN_ENABLE); + } + /** Enable DMA Controller. */ + static void dmac_enable() + { + DMAC->DMAC_EN = DMAC_EN_ENABLE; + } + /** Disable DMA Channel. */ + static void dmac_channel_disable(uint32_t ul_num) + { + DMAC->DMAC_CHDR = DMAC_CHDR_DIS0 << ul_num; + } + /** Enable DMA Channel. */ + static void dmac_channel_enable(uint32_t ul_num) + { + DMAC->DMAC_CHER = DMAC_CHER_ENA0 << ul_num; + } + /** Poll for transfer complete. */ + static bool dmac_channel_transfer_done(uint32_t ul_num) + { + return (DMAC->DMAC_CHSR & (DMAC_CHSR_ENA0 << ul_num)) ? false : true; + } + + static void spi_set_16bit_transfer() + { + SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] = (SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] &= 0xFFFFFF0F) | 0x00000080; + } + + static void spi_set_8bit_transfer() + { + SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI0->SPI_CSR[ILI_SPI_CHIP_SEL] &= 0xFFFFFF0F; + } + //------------------------------------------------------------------------------ + void dmaBegin() + { + PIO_Configure( + g_APinDescription[PIN_SPI_MOSI].pPort, + g_APinDescription[PIN_SPI_MOSI].ulPinType, + g_APinDescription[PIN_SPI_MOSI].ulPin, + g_APinDescription[PIN_SPI_MOSI].ulPinConfiguration); + PIO_Configure( + g_APinDescription[PIN_SPI_MISO].pPort, + g_APinDescription[PIN_SPI_MISO].ulPinType, + g_APinDescription[PIN_SPI_MISO].ulPin, + g_APinDescription[PIN_SPI_MISO].ulPinConfiguration); + PIO_Configure( + g_APinDescription[PIN_SPI_SCK].pPort, + g_APinDescription[PIN_SPI_SCK].ulPinType, + g_APinDescription[PIN_SPI_SCK].ulPin, + g_APinDescription[PIN_SPI_SCK].ulPinConfiguration); + pmc_enable_periph_clk(ID_SPI0); +#if ILI_USE_SAM3X_DMAC + pmc_enable_periph_clk(ID_DMAC); + dmac_disable(); + DMAC->DMAC_GCFG = DMAC_GCFG_ARB_CFG_FIXED; + dmac_enable(); +#if ILI_USE_SAM3X_BUS_MATRIX_FIX + MATRIX->MATRIX_WPMR = 0x4d415400; + MATRIX->MATRIX_MCFG[1] = 1; + MATRIX->MATRIX_MCFG[2] = 1; + MATRIX->MATRIX_SCFG[0] = 0x01000010; + MATRIX->MATRIX_SCFG[1] = 0x01000010; + MATRIX->MATRIX_SCFG[7] = 0x01000010; +#endif // ILI_USE_SAM3X_BUS_MATRIX_FIX +#endif // ILI_USE_SAM3X_DMAC + } + //------------------------------------------------------------------------------ + // initialize SPI controller + void dmaInit(uint8_t sckDivisor) + { + uint8_t scbr = sckDivisor; + Spi *pSpi = SPI0; + // disable SPI + pSpi->SPI_CR = SPI_CR_SPIDIS; + // reset SPI + pSpi->SPI_CR = SPI_CR_SWRST; + // no mode fault detection, set master mode + pSpi->SPI_MR = SPI_PCS(ILI_SPI_CHIP_SEL) | SPI_MR_MODFDIS | SPI_MR_MSTR; + // mode 0, 8-bit, + pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(scbr) | SPI_CSR_NCPHA | SPI_CSR_BITS_8_BIT; + // enable SPI + pSpi->SPI_CR |= SPI_CR_SPIEN; + } + + void dmaInit16(uint8_t sckDivisor) + { + uint8_t scbr = sckDivisor; + Spi *pSpi = SPI0; + // disable SPI + pSpi->SPI_CR = SPI_CR_SPIDIS; + // reset SPI + pSpi->SPI_CR = SPI_CR_SWRST; + // no mode fault detection, set master mode + pSpi->SPI_MR = SPI_PCS(ILI_SPI_CHIP_SEL) | SPI_MR_MODFDIS | SPI_MR_MSTR; + // mode 0, 16-bit, + pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(scbr) | SPI_CSR_NCPHA | SPI_CSR_BITS_16_BIT; + // enable SPI + pSpi->SPI_CR |= SPI_CR_SPIEN; + } + //------------------------------------------------------------------------------ + // start RX DMA + void spiDmaRX(uint8_t *dst, uint16_t count) + { + dmac_channel_disable(ILI_SPI_DMAC_RX_CH); + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_SADDR = (uint32_t)&SPI0->SPI_RDR; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_DADDR = (uint32_t)dst; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_CTRLA = count | + DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | + DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_PER2MEM_DMA_FC | + DMAC_CTRLB_SRC_INCR_FIXED | DMAC_CTRLB_DST_INCR_INCREMENTING; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_RX_CH].DMAC_CFG = DMAC_CFG_SRC_PER(ILI_SPI_RX_IDX) | + DMAC_CFG_SRC_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ASAP_CFG; + dmac_channel_enable(ILI_SPI_DMAC_RX_CH); + } + //------------------------------------------------------------------------------ + // start TX DMA + void spiDmaTX(const uint8_t *src, uint16_t count) + { + static uint8_t ff = 0XFF; + uint32_t src_incr = DMAC_CTRLB_SRC_INCR_INCREMENTING; + if (!src) + { + src = &ff; + src_incr = DMAC_CTRLB_SRC_INCR_FIXED; + } + dmac_channel_disable(ILI_SPI_DMAC_TX_CH); + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLA = count | + DMAC_CTRLA_SRC_WIDTH_BYTE | DMAC_CTRLA_DST_WIDTH_BYTE; + + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | + DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | + src_incr | DMAC_CTRLB_DST_INCR_FIXED; + + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(ILI_SPI_TX_IDX) | + DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; + + dmac_channel_enable(ILI_SPI_DMAC_TX_CH); + } + + void spiDmaTX16(const uint16_t *src, uint16_t count) + { + static uint16_t ff = 0XFFFF; + uint32_t src_incr = DMAC_CTRLB_SRC_INCR_INCREMENTING; + if (!src) + { + src = &ff; + src_incr = DMAC_CTRLB_SRC_INCR_FIXED; + } + dmac_channel_disable(ILI_SPI_DMAC_TX_CH); + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_SADDR = (uint32_t)src; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DADDR = (uint32_t)&SPI0->SPI_TDR; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_DSCR = 0; + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLA = count | + DMAC_CTRLA_SRC_WIDTH_HALF_WORD | DMAC_CTRLA_DST_WIDTH_HALF_WORD; + + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CTRLB = DMAC_CTRLB_SRC_DSCR | + DMAC_CTRLB_DST_DSCR | DMAC_CTRLB_FC_MEM2PER_DMA_FC | + src_incr | DMAC_CTRLB_DST_INCR_FIXED; + + DMAC->DMAC_CH_NUM[ILI_SPI_DMAC_TX_CH].DMAC_CFG = DMAC_CFG_DST_PER(ILI_SPI_TX_IDX) | + DMAC_CFG_DST_H2SEL | DMAC_CFG_SOD | DMAC_CFG_FIFOCFG_ALAP_CFG; + + dmac_channel_enable(ILI_SPI_DMAC_TX_CH); + } + //------------------------------------------------------------------------------ + __attribute__((always_inline)) + uint8_t + dmaSpiTransfer(uint8_t b) + { + Spi *pSpi = SPI0; + + pSpi->SPI_TDR = b; + while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) + { + } + b = pSpi->SPI_RDR; + return b; + } + + __attribute__((always_inline)) + uint16_t + dmaSpiTransfer(uint16_t w) + { + spi_set_16bit_transfer(); + SPI0->SPI_TDR = w; + while ((SPI0->SPI_SR & SPI_SR_RDRF) == 0) + { + } + w = SPI0->SPI_RDR; + spi_set_8bit_transfer(); + return w; + } + //------------------------------------------------------------------------------ + /** SPI receive a byte */ + __attribute__((always_inline)) + uint8_t + dmaReceive() + { + return dmaSpiTransfer((uint8_t)0XFF); + } + //------------------------------------------------------------------------------ + /** SPI receive multiple bytes */ + uint8_t dmaReceive(uint8_t *buf, uint32_t n) + { + Spi *pSpi = SPI0; + int rtn = 0; +#if ILI_USE_SAM3X_DMAC + // clear overrun error + pSpi->SPI_SR; + + spiDmaRX(buf, n); + spiDmaTX(0, n); + + uint32_t m = millis(); + while (!dmac_channel_transfer_done(ILI_SPI_DMAC_RX_CH)) + { + if ((millis() - m) > ILI_SAM3X_DMA_TIMEOUT) + { + dmac_channel_disable(ILI_SPI_DMAC_RX_CH); + dmac_channel_disable(ILI_SPI_DMAC_TX_CH); + rtn = 2; + break; + } + } + if (pSpi->SPI_SR & SPI_SR_OVRES) + rtn |= 1; +#else // ILI_USE_SAM3X_DMAC + for (uint32_t i = 0; i < n; i++) + { + pSpi->SPI_TDR = 0XFF; + while ((pSpi->SPI_SR & SPI_SR_RDRF) == 0) + { + } + buf[i] = pSpi->SPI_RDR; + } +#endif // ILI_USE_SAM3X_DMAC + return rtn; + } + //------------------------------------------------------------------------------ + /** SPI send a byte */ + __attribute__((always_inline)) void dmaSend(uint8_t b) + { + dmaSpiTransfer(b); + } + + __attribute__((always_inline)) void dmaSend(uint16_t w) + { + dmaSpiTransfer(w); + } + //------------------------------------------------------------------------------ + void dmaSend(const uint8_t *buf, uint32_t n) + { + Spi *pSpi = SPI0; + spiDmaTX(buf, n); + while (!dmac_channel_transfer_done(ILI_SPI_DMAC_TX_CH)) + { + } + while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) + { + } + // leave RDR empty + pSpi->SPI_RDR; + } + + void dmaSend(const uint16_t *buf, uint32_t n) + { + Spi *pSpi = SPI0; + pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(_spiClkDivider) | SPI_CSR_NCPHA | SPI_CSR_BITS_16_BIT; + spiDmaTX16(buf, n); + while (!dmac_channel_transfer_done(ILI_SPI_DMAC_TX_CH)) + { + } + while ((pSpi->SPI_SR & SPI_SR_TXEMPTY) == 0) + { + } + // leave RDR empty + pSpi->SPI_RDR; + pSpi->SPI_CSR[ILI_SPI_CHIP_SEL] = SPI_CSR_SCBR(_spiClkDivider) | SPI_CSR_NCPHA | SPI_CSR_BITS_8_BIT; + } +#endif +#endif +}; + +#endif diff --git a/lib/ILI9341_due/SystemFont5x7.h b/lib/ILI9341_due/SystemFont5x7.h index cdf239c..a9a970e 100644 --- a/lib/ILI9341_due/SystemFont5x7.h +++ b/lib/ILI9341_due/SystemFont5x7.h @@ -1,157 +1,157 @@ -/* - * - * System5x7 - * - * - * File Name : System5x7.h - * Date : 28 Oct 2008 - * Font size in bytes : 470 - * Font width : 5 - * Font height : 7 - * Font first char : 32 - * Font last char : 127 - * Font used chars : 94 - * - * The font data are defined as - * - * struct _FONT_ { - * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; - * uint8_t font_Width_in_Pixel_for_fixed_drawing; - * uint8_t font_Height_in_Pixel_for_all_characters; - * unit8_t font_First_Char; - * uint8_t font_Char_Count; - * - * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; - * // for each character the separate width in pixels, - * // characters < 128 have an implicit virtual right empty row - * - * uint8_t font_data[]; - * // bit field of all characters - */ - -#include -#include - -#ifndef SYSTEM5x7_H -#define SYSTEM5x7_H - -#define SYSTEM5x7_WIDTH 5 -#define SYSTEM5x7_HEIGHT 7 - -/* - * added to allow fontname to match header file name. - * as well as keep the old name for backward compatibility - */ - -#define SystemFont5x7 System5x7 - -static const uint8_t System5x7[] PROGMEM = { - 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height - 0x05, // width - 0x07, // height - 0x20, // first char - 0x60, // char count - - // Fixed width; char width table not used !!!! - - // font data - 0x00, 0x00, 0x00, 0x00, 0x00,// (space) - 0x00, 0x00, 0x5F, 0x00, 0x00,// ! - 0x00, 0x07, 0x00, 0x07, 0x00,// " - 0x14, 0x7F, 0x14, 0x7F, 0x14,// # - 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ - 0x23, 0x13, 0x08, 0x64, 0x62,// % - 0x36, 0x49, 0x55, 0x22, 0x50,// & - 0x00, 0x05, 0x03, 0x00, 0x00,// ' - 0x00, 0x1C, 0x22, 0x41, 0x00,// ( - 0x00, 0x41, 0x22, 0x1C, 0x00,// ) - 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * - 0x08, 0x08, 0x3E, 0x08, 0x08,// + - 0x00, 0x50, 0x30, 0x00, 0x00,// , - 0x08, 0x08, 0x08, 0x08, 0x08,// - - 0x00, 0x60, 0x60, 0x00, 0x00,// . - 0x20, 0x10, 0x08, 0x04, 0x02,// / - 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 - 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 - 0x42, 0x61, 0x51, 0x49, 0x46,// 2 - 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 - 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 - 0x27, 0x45, 0x45, 0x45, 0x39,// 5 - 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 - 0x01, 0x71, 0x09, 0x05, 0x03,// 7 - 0x36, 0x49, 0x49, 0x49, 0x36,// 8 - 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 - 0x00, 0x36, 0x36, 0x00, 0x00,// : - 0x00, 0x56, 0x36, 0x00, 0x00,// ; - 0x00, 0x08, 0x14, 0x22, 0x41,// < - 0x14, 0x14, 0x14, 0x14, 0x14,// = - 0x41, 0x22, 0x14, 0x08, 0x00,// > - 0x02, 0x01, 0x51, 0x09, 0x06,// ? - 0x32, 0x49, 0x79, 0x41, 0x3E,// @ - 0x7E, 0x11, 0x11, 0x11, 0x7E,// A - 0x7F, 0x49, 0x49, 0x49, 0x36,// B - 0x3E, 0x41, 0x41, 0x41, 0x22,// C - 0x7F, 0x41, 0x41, 0x22, 0x1C,// D - 0x7F, 0x49, 0x49, 0x49, 0x41,// E - 0x7F, 0x09, 0x09, 0x01, 0x01,// F - 0x3E, 0x41, 0x41, 0x51, 0x32,// G - 0x7F, 0x08, 0x08, 0x08, 0x7F,// H - 0x00, 0x41, 0x7F, 0x41, 0x00,// I - 0x20, 0x40, 0x41, 0x3F, 0x01,// J - 0x7F, 0x08, 0x14, 0x22, 0x41,// K - 0x7F, 0x40, 0x40, 0x40, 0x40,// L - 0x7F, 0x02, 0x04, 0x02, 0x7F,// M - 0x7F, 0x04, 0x08, 0x10, 0x7F,// N - 0x3E, 0x41, 0x41, 0x41, 0x3E,// O - 0x7F, 0x09, 0x09, 0x09, 0x06,// P - 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q - 0x7F, 0x09, 0x19, 0x29, 0x46,// R - 0x46, 0x49, 0x49, 0x49, 0x31,// S - 0x01, 0x01, 0x7F, 0x01, 0x01,// T - 0x3F, 0x40, 0x40, 0x40, 0x3F,// U - 0x1F, 0x20, 0x40, 0x20, 0x1F,// V - 0x7F, 0x20, 0x18, 0x20, 0x7F,// W - 0x63, 0x14, 0x08, 0x14, 0x63,// X - 0x03, 0x04, 0x78, 0x04, 0x03,// Y - 0x61, 0x51, 0x49, 0x45, 0x43,// Z - 0x00, 0x00, 0x7F, 0x41, 0x41,// [ - 0x02, 0x04, 0x08, 0x10, 0x20,// "\" - 0x41, 0x41, 0x7F, 0x00, 0x00,// ] - 0x04, 0x02, 0x01, 0x02, 0x04,// ^ - 0x40, 0x40, 0x40, 0x40, 0x40,// _ - 0x00, 0x01, 0x02, 0x04, 0x00,// ` - 0x20, 0x54, 0x54, 0x54, 0x78,// a - 0x7F, 0x48, 0x44, 0x44, 0x38,// b - 0x38, 0x44, 0x44, 0x44, 0x20,// c - 0x38, 0x44, 0x44, 0x48, 0x7F,// d - 0x38, 0x54, 0x54, 0x54, 0x18,// e - 0x08, 0x7E, 0x09, 0x01, 0x02,// f - 0x08, 0x14, 0x54, 0x54, 0x3C,// g - 0x7F, 0x08, 0x04, 0x04, 0x78,// h - 0x00, 0x44, 0x7D, 0x40, 0x00,// i - 0x20, 0x40, 0x44, 0x3D, 0x00,// j - 0x00, 0x7F, 0x10, 0x28, 0x44,// k - 0x00, 0x41, 0x7F, 0x40, 0x00,// l - 0x7C, 0x04, 0x18, 0x04, 0x78,// m - 0x7C, 0x08, 0x04, 0x04, 0x78,// n - 0x38, 0x44, 0x44, 0x44, 0x38,// o - 0x7C, 0x14, 0x14, 0x14, 0x08,// p - 0x08, 0x14, 0x14, 0x18, 0x7C,// q - 0x7C, 0x08, 0x04, 0x04, 0x08,// r - 0x48, 0x54, 0x54, 0x54, 0x20,// s - 0x04, 0x3F, 0x44, 0x40, 0x20,// t - 0x3C, 0x40, 0x40, 0x20, 0x7C,// u - 0x1C, 0x20, 0x40, 0x20, 0x1C,// v - 0x3C, 0x40, 0x30, 0x40, 0x3C,// w - 0x44, 0x28, 0x10, 0x28, 0x44,// x - 0x0C, 0x50, 0x50, 0x50, 0x3C,// y - 0x44, 0x64, 0x54, 0x4C, 0x44,// z - 0x00, 0x08, 0x36, 0x41, 0x00,// { - 0x00, 0x00, 0x7F, 0x00, 0x00,// | - 0x00, 0x41, 0x36, 0x08, 0x00,// } - 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> - 0x08, 0x1C, 0x2A, 0x08, 0x08 // <- - -}; - -#endif +/* + * + * System5x7 + * + * + * File Name : System5x7.h + * Date : 28 Oct 2008 + * Font size in bytes : 470 + * Font width : 5 + * Font height : 7 + * Font first char : 32 + * Font last char : 127 + * Font used chars : 94 + * + * The font data are defined as + * + * struct _FONT_ { + * uint16_t font_Size_in_Bytes_over_all_included_Size_it_self; + * uint8_t font_Width_in_Pixel_for_fixed_drawing; + * uint8_t font_Height_in_Pixel_for_all_characters; + * unit8_t font_First_Char; + * uint8_t font_Char_Count; + * + * uint8_t font_Char_Widths[font_Last_Char - font_First_Char +1]; + * // for each character the separate width in pixels, + * // characters < 128 have an implicit virtual right empty row + * + * uint8_t font_data[]; + * // bit field of all characters + */ + +#include +#include + +#ifndef SYSTEM5x7_H +#define SYSTEM5x7_H + +#define SYSTEM5x7_WIDTH 5 +#define SYSTEM5x7_HEIGHT 7 + +/* + * added to allow fontname to match header file name. + * as well as keep the old name for backward compatibility + */ + +#define SystemFont5x7 System5x7 + +static const uint8_t System5x7[] PROGMEM = { + 0x0, 0x0, // size of zero indicates fixed width font, actual length is width * height + 0x05, // width + 0x07, // height + 0x20, // first char + 0x60, // char count + + // Fixed width; char width table not used !!!! + + // font data + 0x00, 0x00, 0x00, 0x00, 0x00,// (space) + 0x00, 0x00, 0x5F, 0x00, 0x00,// ! + 0x00, 0x07, 0x00, 0x07, 0x00,// " + 0x14, 0x7F, 0x14, 0x7F, 0x14,// # + 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ + 0x23, 0x13, 0x08, 0x64, 0x62,// % + 0x36, 0x49, 0x55, 0x22, 0x50,// & + 0x00, 0x05, 0x03, 0x00, 0x00,// ' + 0x00, 0x1C, 0x22, 0x41, 0x00,// ( + 0x00, 0x41, 0x22, 0x1C, 0x00,// ) + 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * + 0x08, 0x08, 0x3E, 0x08, 0x08,// + + 0x00, 0x50, 0x30, 0x00, 0x00,// , + 0x08, 0x08, 0x08, 0x08, 0x08,// - + 0x00, 0x60, 0x60, 0x00, 0x00,// . + 0x20, 0x10, 0x08, 0x04, 0x02,// / + 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0 + 0x00, 0x42, 0x7F, 0x40, 0x00,// 1 + 0x42, 0x61, 0x51, 0x49, 0x46,// 2 + 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 + 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 + 0x27, 0x45, 0x45, 0x45, 0x39,// 5 + 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 + 0x01, 0x71, 0x09, 0x05, 0x03,// 7 + 0x36, 0x49, 0x49, 0x49, 0x36,// 8 + 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 + 0x00, 0x36, 0x36, 0x00, 0x00,// : + 0x00, 0x56, 0x36, 0x00, 0x00,// ; + 0x00, 0x08, 0x14, 0x22, 0x41,// < + 0x14, 0x14, 0x14, 0x14, 0x14,// = + 0x41, 0x22, 0x14, 0x08, 0x00,// > + 0x02, 0x01, 0x51, 0x09, 0x06,// ? + 0x32, 0x49, 0x79, 0x41, 0x3E,// @ + 0x7E, 0x11, 0x11, 0x11, 0x7E,// A + 0x7F, 0x49, 0x49, 0x49, 0x36,// B + 0x3E, 0x41, 0x41, 0x41, 0x22,// C + 0x7F, 0x41, 0x41, 0x22, 0x1C,// D + 0x7F, 0x49, 0x49, 0x49, 0x41,// E + 0x7F, 0x09, 0x09, 0x01, 0x01,// F + 0x3E, 0x41, 0x41, 0x51, 0x32,// G + 0x7F, 0x08, 0x08, 0x08, 0x7F,// H + 0x00, 0x41, 0x7F, 0x41, 0x00,// I + 0x20, 0x40, 0x41, 0x3F, 0x01,// J + 0x7F, 0x08, 0x14, 0x22, 0x41,// K + 0x7F, 0x40, 0x40, 0x40, 0x40,// L + 0x7F, 0x02, 0x04, 0x02, 0x7F,// M + 0x7F, 0x04, 0x08, 0x10, 0x7F,// N + 0x3E, 0x41, 0x41, 0x41, 0x3E,// O + 0x7F, 0x09, 0x09, 0x09, 0x06,// P + 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q + 0x7F, 0x09, 0x19, 0x29, 0x46,// R + 0x46, 0x49, 0x49, 0x49, 0x31,// S + 0x01, 0x01, 0x7F, 0x01, 0x01,// T + 0x3F, 0x40, 0x40, 0x40, 0x3F,// U + 0x1F, 0x20, 0x40, 0x20, 0x1F,// V + 0x7F, 0x20, 0x18, 0x20, 0x7F,// W + 0x63, 0x14, 0x08, 0x14, 0x63,// X + 0x03, 0x04, 0x78, 0x04, 0x03,// Y + 0x61, 0x51, 0x49, 0x45, 0x43,// Z + 0x00, 0x00, 0x7F, 0x41, 0x41,// [ + 0x02, 0x04, 0x08, 0x10, 0x20,// "\" + 0x41, 0x41, 0x7F, 0x00, 0x00,// ] + 0x04, 0x02, 0x01, 0x02, 0x04,// ^ + 0x40, 0x40, 0x40, 0x40, 0x40,// _ + 0x00, 0x01, 0x02, 0x04, 0x00,// ` + 0x20, 0x54, 0x54, 0x54, 0x78,// a + 0x7F, 0x48, 0x44, 0x44, 0x38,// b + 0x38, 0x44, 0x44, 0x44, 0x20,// c + 0x38, 0x44, 0x44, 0x48, 0x7F,// d + 0x38, 0x54, 0x54, 0x54, 0x18,// e + 0x08, 0x7E, 0x09, 0x01, 0x02,// f + 0x08, 0x14, 0x54, 0x54, 0x3C,// g + 0x7F, 0x08, 0x04, 0x04, 0x78,// h + 0x00, 0x44, 0x7D, 0x40, 0x00,// i + 0x20, 0x40, 0x44, 0x3D, 0x00,// j + 0x00, 0x7F, 0x10, 0x28, 0x44,// k + 0x00, 0x41, 0x7F, 0x40, 0x00,// l + 0x7C, 0x04, 0x18, 0x04, 0x78,// m + 0x7C, 0x08, 0x04, 0x04, 0x78,// n + 0x38, 0x44, 0x44, 0x44, 0x38,// o + 0x7C, 0x14, 0x14, 0x14, 0x08,// p + 0x08, 0x14, 0x14, 0x18, 0x7C,// q + 0x7C, 0x08, 0x04, 0x04, 0x08,// r + 0x48, 0x54, 0x54, 0x54, 0x20,// s + 0x04, 0x3F, 0x44, 0x40, 0x20,// t + 0x3C, 0x40, 0x40, 0x20, 0x7C,// u + 0x1C, 0x20, 0x40, 0x20, 0x1C,// v + 0x3C, 0x40, 0x30, 0x40, 0x3C,// w + 0x44, 0x28, 0x10, 0x28, 0x44,// x + 0x0C, 0x50, 0x50, 0x50, 0x3C,// y + 0x44, 0x64, 0x54, 0x4C, 0x44,// z + 0x00, 0x08, 0x36, 0x41, 0x00,// { + 0x00, 0x00, 0x7F, 0x00, 0x00,// | + 0x00, 0x41, 0x36, 0x08, 0x00,// } + 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> + 0x08, 0x1C, 0x2A, 0x08, 0x08 // <- + +}; + +#endif diff --git a/lib/readme.txt b/lib/readme.txt index cfa16df..11f9889 100644 --- a/lib/readme.txt +++ b/lib/readme.txt @@ -1,41 +1,41 @@ - -This directory is intended for project specific (private) libraries. -PlatformIO will compile them to static libraries and link them to executable files. - -The source code of each library should be placed in separate directories, like -"lib/private_lib/[here are source files]". - -For example, see the structure of the following two libraries `Foo` and `Bar`: - -|--lib -| | -| |--Bar -| | |--docs -| | |--examples -| | |--src -| | |- Bar.c -| | |- Bar.h -| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html -| | -| |--Foo -| | |- Foo.c -| | |- Foo.h -| | -| |- readme.txt --> THIS FILE -| -|- platformio.ini -|--src - |- main.c - -Then in `src/main.c` you should use: - -#include -#include - -// rest H/C/CPP code - -PlatformIO will find your libraries automatically, configure preprocessor's -include paths and build them. - -More information about PlatformIO Library Dependency Finder -- https://docs.platformio.org/page/librarymanager/ldf.html + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link them to executable files. + +The source code of each library should be placed in separate directories, like +"lib/private_lib/[here are source files]". + +For example, see the structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- readme.txt --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +Then in `src/main.c` you should use: + +#include +#include + +// rest H/C/CPP code + +PlatformIO will find your libraries automatically, configure preprocessor's +include paths and build them. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/src/ctl_display.cpp b/src/ctl_display.cpp index aaf0ec9..721fe4b 100644 --- a/src/ctl_display.cpp +++ b/src/ctl_display.cpp @@ -1,475 +1,475 @@ -/* - * ctl_display.cpp - * - * Created on: 2019-02-18 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "main.h" - -typedef enum -{ - DISPLAY_SCREEN_CORE, - DISPLAY_SCREEN_RS485, - DISPLAY_SCREEN_INFO, - DISPLAY_SCREEN_SUPPLY, - DISPLAY_SCREEN_TEMP, - DISPLAY_SCREEN_LASTITEM -} BrbDisplayScreen; - -static BrbGenericCBH BrbCtlDisplay_Timer; - -static BrbGenericCBH BrbCtlDisplay_ScreenCore; -static BrbGenericCBH BrbCtlDisplay_ScreenRS485; -static BrbGenericCBH BrbCtlDisplay_ScreenInfo; -static BrbGenericCBH BrbCtlDisplay_ScreenSupply; -static BrbGenericCBH BrbCtlDisplay_ScreenTemp; - -static const BrbDisplayScreenPrototype glob_display_screen_prototype[] = - { - DISPLAY_SCREEN_CORE, - "CORE", - BrbCtlDisplay_ScreenCore, - - DISPLAY_SCREEN_RS485, - "RS485", - BrbCtlDisplay_ScreenRS485, - - DISPLAY_SCREEN_INFO, - "INFO", - BrbCtlDisplay_ScreenInfo, - - DISPLAY_SCREEN_SUPPLY, - "SUPPLY", - BrbCtlDisplay_ScreenSupply, - - DISPLAY_SCREEN_TEMP, - "TEMP", - BrbCtlDisplay_ScreenTemp, - - DISPLAY_SCREEN_LASTITEM, - NULL, - NULL, -}; -/**********************************************************************************************************************/ -int BrbCtlDisplay_Setup(BrbBase *brb_base) -{ - BrbDisplayBase *display_base = (BrbDisplayBase *)&glob_display_base; - - /* Clean up base */ - memset(&glob_display_base, 0, sizeof(BrbDisplayBase)); - - display_base->brb_base = brb_base; - // display_base->screen_cur = DISPLAY_SCREEN_CORE; - display_base->screen_cur = DISPLAY_SCREEN_INFO; - // display_base->screen_cur = DISPLAY_SCREEN_SUPPLY; - // display_base->screen_cur = DISPLAY_SCREEN_TEMP; - - display_base->pin_led = TFT_LED; - display_base->pin_cs = TFT_CS; - display_base->pin_rst = TFT_RST; - display_base->pin_dc = TFT_DC; - display_base->pin_mosi = TFT_MOSI; - display_base->pin_clk = TFT_CLK; - display_base->pin_miso = TFT_MISO; - - display_base->screen_arr_ptr = (BrbDisplayScreenPrototype *)&glob_display_screen_prototype; - display_base->screen_arr_cnt = DISPLAY_SCREEN_LASTITEM; - - // display_base->tft = (ILI9341_due *)&tft; - display_base->tft = new ILI9341_due(display_base->pin_cs, display_base->pin_dc, display_base->pin_rst); - // display_base->tft = new TFT_eSPI(); - - BrbDisplayBase_Init(display_base); - BrbDisplayBase_ScreenAction(display_base, -1); - - BrbTimerAdd(display_base->brb_base, 5000, 0, BrbCtlDisplay_Timer, display_base); - - return 0; -} -/**********************************************************************************************************************/ -/* DISPLAY */ -/**********************************************************************************************************************/ -static int BrbCtlDisplay_Timer(void *base_ptr, void *cb_data_ptr) -{ - // BrbTimer *timer = (BrbTimer *)base_ptr; - BrbDisplayBase *display_base = (BrbDisplayBase *)cb_data_ptr; - BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; - - BrbDisplayBase_ScreenAction(display_base, -1); - - // display_base->screen_cur++; - - int delay = 5000; - - // switch (pdu_base->state.code) - // { - // case PDU_STATE_START_INIT: - // case PDU_STATE_START_DELAY: - // case PDU_STATE_START_CHECK: - // case PDU_STATE_STOP_INIT: - // case PDU_STATE_STOP_DELAY: - // case PDU_STATE_STOP_CHECK: - // { - // delay = 1500; - // break; - // } - // case PDU_STATE_FAILURE: - // { - // delay = 2500; - // break; - // } - // case PDU_STATE_RUNNING: - // case PDU_STATE_NONE: - // default: - // { - // delay = 5000; - // break; - // } - // } - - BrbTimerAdd(&glob_brb_base, delay, 0, BrbCtlDisplay_Timer, display_base); - - return 0; -} -/**********************************************************************************************************************/ -int BrbCtlDisplay_ScreenInfo(void *brb_base_ptr, void *display_base_ptr) -{ - BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; - BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; - - int pos_x; - int pos_y; - - const char *title_ptr = NULL; - const char *text_ptr = NULL; - int color; - - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_SetBg(display_base); - BrbDisplayBase_SetTitle(display_base, PSTR("INFO")); - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); - } - - // if (!display_base->flags.on_action && display_base->flags.on_select) - // { - // display_base->flags.on_action = 1; - // display_base->action_code = -1; - // } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); - - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, pos_y, 310, 49, DISPLAY_COLOR_BG); - - color = BrbPDUBase_GetStateColor(pdu_base); - title_ptr = BrbPDUBase_GetStateText(pdu_base); - text_ptr = BrbPDUBase_GetFailureText(pdu_base); - - display_base->tft->setTextColor(color, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); - display_base->tft->setTextScale(1); - display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y); - display_base->tft->println((const __FlashStringHelper *)title_ptr); - - if (text_ptr) - { - display_base->tft->setTextColor(DISPLAY_COLOR_TEXT_DEFAULT, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); - display_base->tft->setTextScale(1); - display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y + 35); - display_base->tft->print((const __FlashStringHelper *)text_ptr); - } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 52; - - display_base->box.text_color = color; - display_base->tft->fillRect(pos_x, pos_y + 12, 320 - (DISPLAY_SZ_MARGIN * 2), 35, DISPLAY_COLOR_BG); - BrbDisplayBase_BoxUptime(display_base, pos_x, pos_y, PSTR("State"), (pdu_base->state.delta / 1000)); - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 52; - - display_base->tft->fillRect(pos_x, pos_y + 12, 320 - (DISPLAY_SZ_MARGIN * 2), 35, DISPLAY_COLOR_BG); - display_base->box.text_color = (pdu_base->sensor_power.value < PDU_POWER_MIN_VALUE) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("ENERGIA"), pdu_base->sensor_power.value, 1, PSTR("VAC")); - - display_base->box.text_color = (pdu_base->zero_power.value < PDU_POWER_MIN_HZ) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x + 115, pos_y, PSTR("FREQ"), pdu_base->zero_power.value, 1, PSTR("Hz")); - - display_base->box.text_color = pdu_base->ms.power_delay > 0 ? ILI9341_SEAGREEN : ILI9341_ORANGERED; - BrbDisplayBase_BoxUptime(display_base, pos_x + 200, pos_y, PSTR("Uptime"), pdu_base->ms.power_delay / 1000); - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 52; - - display_base->tft->fillRect(pos_x, pos_y + 12, 320 - (DISPLAY_SZ_MARGIN * 2), 35, DISPLAY_COLOR_BG); - display_base->box.text_color = (pdu_base->sensor_aux.value < PDU_AUX_MIN_VALUE) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("AUXILIAR"), pdu_base->sensor_aux.value, 1, PSTR("VAC")); - - display_base->box.text_color = (pdu_base->zero_aux.value < PDU_AUX_MIN_HZ) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x + 115, pos_y, PSTR("FREQ"), pdu_base->zero_aux.value, 1, PSTR("Hz")); - - display_base->box.text_color = pdu_base->ms.aux_delay > 0 ? ILI9341_SEAGREEN : ILI9341_ORANGERED; - BrbDisplayBase_BoxUptime(display_base, pos_x + 200, pos_y, PSTR("Uptime"), pdu_base->ms.aux_delay / 1000); - - display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); - display_base->tft->setTextScale(1); - - return 0; -} -/**********************************************************************************************************************/ -int BrbCtlDisplay_ScreenSupply(void *brb_base_ptr, void *display_base_ptr) -{ - BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; - BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; - - const char *title_ptr = NULL; - const char *text_ptr = NULL; - int color = ILI9341_ORANGERED; - - int pos_x; - int pos_y; - - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_SetBg(display_base); - BrbDisplayBase_SetTitle(display_base, PSTR("Supply")); - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); - } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); - - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, pos_y, 310, 49, DISPLAY_COLOR_BG); - - if ((pdu_base->sensor_sp01_in.value < 12.0) || (pdu_base->sensor_sp01_out.value < 5.0) || (pdu_base->sensor_sp01_out.value > 6.0)) - { - title_ptr = PSTR("Trocar Fonte 01"); - text_ptr = PSTR("Verificar ou trocar equipamento"); - color = ILI9341_ORANGERED; - } - else if ((pdu_base->sensor_sp02_in.value < 12.0) || (pdu_base->sensor_sp02_out.value < 5.0) || (pdu_base->sensor_sp02_out.value > 6.0)) - { - title_ptr = PSTR("Trocar Fonte 02"); - text_ptr = PSTR("Verificar ou trocar equipamento"); - color = ILI9341_ORANGERED; - } - else - { - title_ptr = PSTR("Ativo"); - text_ptr = PSTR("- - - -"); - color = ILI9341_SEAGREEN; - } - - display_base->tft->setTextColor(color, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); - display_base->tft->setTextScale(1); - display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y); - display_base->tft->println((const __FlashStringHelper *)title_ptr); - - if (text_ptr) - { - display_base->tft->setTextColor(DISPLAY_COLOR_TEXT_DEFAULT, DISPLAY_COLOR_BG); - display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); - display_base->tft->setTextScale(1); - display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y + 35); - display_base->tft->print((const __FlashStringHelper *)text_ptr); - } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = 95; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 110, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = (pdu_base->sensor_sp01_in.value < 12.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("Fonte 01 - IN"), pdu_base->sensor_sp01_in.value, 1, PSTR("VDC")); - - display_base->tft->fillRect(pos_x + 160, pos_y + DISPLAY_SZ_BOX_H, 110, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = (pdu_base->sensor_sp01_out.value < 3.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x + 160, pos_y, PSTR("Fonte 01 - OUT"), pdu_base->sensor_sp01_out.value, 1, PSTR("VDC")); - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 55; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 110, 30, ILI9341_WHITE); - display_base->box.text_color = (pdu_base->sensor_sp02_in.value < 12.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("Fonte 02 - IN"), pdu_base->sensor_sp02_in.value, 1, PSTR("VDC")); - - display_base->tft->fillRect(pos_x + 160, pos_y + DISPLAY_SZ_BOX_H, 110, 30, ILI9341_WHITE); - display_base->box.text_color = (pdu_base->sensor_sp02_out.value < 3.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; - BrbDisplayBase_BoxSub(display_base, pos_x + 160, pos_y, PSTR("Fonte 02 - OUT"), pdu_base->sensor_sp02_out.value, 1, PSTR("VDC")); - - return 0; -} -/**********************************************************************************************************************/ -int BrbCtlDisplay_ScreenTemp(void *brb_base_ptr, void *display_base_ptr) -{ - BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; - BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; - - int pos_x; - int pos_y; - - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_SetBg(display_base); - BrbDisplayBase_SetTitle(display_base, PSTR("Temperatura")); - } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); - - BrbDisplayBase_DrawBarGraph(display_base, pos_x, pos_y, 130, pdu_base->dht_data.dht_temp, -50, 150); - - pos_x = 90; - pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 90, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = BrbDisplayBase_Rainbow(map(pdu_base->dht_data.dht_temp, -25, 100, 0, 127)); - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("TEMP"), pdu_base->dht_data.dht_temp, 1, PSTR("C")); - - // BrbDisplayBase_DrawArcSeg(display_base, pdu_base->dht_data.dht_temp, 0, 130, pos_x, pos_y, 100, PSTR("Celsius"), DISPLAY_ARC_GREEN2RED, 0, 3, 5); - - pos_x = pos_x; - pos_y = pos_y + 60; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 90, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = BrbDisplayBase_Rainbow(map(pdu_base->dht_data.dht_humi, -25, 100, 127, 0)); - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("HUMIDADE"), pdu_base->dht_data.dht_humi, 1, PSTR("%")); - - pos_x = pos_x; - pos_y = pos_y + 60; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 90, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = BrbDisplayBase_Rainbow(map(pdu_base->dht_data.dht_hidx, -25, 100, 0, 127)); - BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("HEAT INDEX"), pdu_base->dht_data.dht_hidx, 1, PSTR("C")); - - return 0; -} -/**********************************************************************************************************************/ -int BrbCtlDisplay_ScreenCore(void *brb_base_ptr, void *display_base_ptr) -{ - BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; - BrbBase *brb_base = (BrbBase *)brb_base_ptr; - - int pos_x; - int pos_y; - - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_SetBg(display_base); - BrbDisplayBase_SetTitle(display_base, PSTR("Core")); - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); - } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = ILI9341_MIDNIGHTBLUE; - BrbDisplayBase_BoxUptime(display_base, pos_x, pos_y, PSTR("UpTime"), millis() / 1000); - BrbDisplayBase_BoxUptime(display_base, pos_x + 140, pos_y, PSTR("LifeTime"), brb_base->data.lifetime_sec); - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 55; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); - BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("Memoria"), PSTR("%d"), BrbBase_FreeRAM()); - // BrbDisplayBase_BoxSub(display_base, pos_x + 160, pos_y, PSTR("Memoria"), BrbBase_FreeRAM(), 1, PSTR("%")); - - // pos_x = DISPLAY_SZ_MARGIN; - // pos_y = pos_y + 55; - - // display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); - // BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("RX/TX"), PSTR("%lu/%lu"), rs485_sess->stats.byte.rx, rs485_sess->stats.byte.tx); - // BrbDisplayBase_BoxUnit(display_base, pos_x, pos_y + DISPLAY_SZ_BOX_H, PSTR("KB")); - - // BrbDisplayBase_BoxFmt(display_base, pos_x + 160, pos_y, PSTR("Error"), PSTR("%lu/%lu"), - // (rs485_sess->stats.err.bad_char + rs485_sess->stats.err.crc + rs485_sess->stats.err.overflow + rs485_sess->stats.err.pkt), - // (rs485_sess->stats.pkt.err.cmd_id + rs485_sess->stats.pkt.err.cmd_no_bcast + rs485_sess->stats.pkt.err.cmd_no_cb)); - - return 0; -} -/**********************************************************************************************************************/ -int BrbCtlDisplay_ScreenRS485(void *brb_base_ptr, void *display_base_ptr) -{ - BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; - BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; - BrbBase *brb_base = (BrbBase *)brb_base_ptr; - BrbRS485Session *rs485_sess = (BrbRS485Session *)&glob_rs485_sess; - - int pos_x; - int pos_y; - - if (display_base->screen_cur != display_base->screen_last) - { - BrbDisplayBase_SetBg(display_base); - BrbDisplayBase_SetTitle(display_base, PSTR("RS485")); - display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); - } - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 110, 30, DISPLAY_COLOR_BG); - display_base->box.text_color = ILI9341_MIDNIGHTBLUE; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); - BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("UUID"), PSTR("%02x-%02x-%02x-%02x"), rs485_sess->data.uuid[0], rs485_sess->data.uuid[1], rs485_sess->data.uuid[2], rs485_sess->data.uuid[2]); - BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("ADDR"), PSTR("%02x"), rs485_sess->data.address); - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 55; - - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); - BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("Packet RX/TX"), PSTR("%lu/%lu"), rs485_sess->stats.pkt.rx, rs485_sess->stats.pkt.tx); - BrbDisplayBase_BoxFmt(display_base, pos_x + 130, pos_y, PSTR("Me"), PSTR("%lu"), rs485_sess->stats.pkt.me); - BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Broadcast"), PSTR("%lu"), rs485_sess->stats.pkt.bcast); - - pos_x = DISPLAY_SZ_MARGIN; - pos_y = pos_y + 55; - display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); - // - // BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Pkt Error"), PSTR("%lu/%lu/%lu"), rs485_sess->stats.pkt.err.cmd_id, rs485_sess->stats.pkt.err.cmd_no_bcast, rs485_sess->stats.pkt.err.cmd_no_cb); - // BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Pkt Error"), PSTR("%lu/%lu/%lu"), rs485_sess->stats.pkt.err.cmd_id, rs485_sess->stats.pkt.err.cmd_no_bcast, rs485_sess->stats.pkt.err.cmd_no_cb); - - char byte_rx[16]; - char byte_tx[16]; - - dtostrf((double)(rs485_sess->stats.byte.rx / 1024.0), 5, 2, byte_rx); - dtostrf((double)(rs485_sess->stats.byte.tx / 1024.0), 5, 2, byte_tx); - - BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("Bytes RX/TX"), PSTR("%s/%s"), byte_rx, byte_tx); - BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Error"), PSTR("%lu/%lu/%lu"), rs485_sess->stats.err.bad_char, rs485_sess->stats.err.crc, rs485_sess->stats.err.overflow); - - return 0; -} -/**********************************************************************************************************************/ +/* + * ctl_display.cpp + * + * Created on: 2019-02-18 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "main.h" + +typedef enum +{ + DISPLAY_SCREEN_CORE, + DISPLAY_SCREEN_RS485, + DISPLAY_SCREEN_INFO, + DISPLAY_SCREEN_SUPPLY, + DISPLAY_SCREEN_TEMP, + DISPLAY_SCREEN_LASTITEM +} BrbDisplayScreen; + +static BrbGenericCBH BrbCtlDisplay_Timer; + +static BrbGenericCBH BrbCtlDisplay_ScreenCore; +static BrbGenericCBH BrbCtlDisplay_ScreenRS485; +static BrbGenericCBH BrbCtlDisplay_ScreenInfo; +static BrbGenericCBH BrbCtlDisplay_ScreenSupply; +static BrbGenericCBH BrbCtlDisplay_ScreenTemp; + +static const BrbDisplayScreenPrototype glob_display_screen_prototype[] = + { + DISPLAY_SCREEN_CORE, + "CORE", + BrbCtlDisplay_ScreenCore, + + DISPLAY_SCREEN_RS485, + "RS485", + BrbCtlDisplay_ScreenRS485, + + DISPLAY_SCREEN_INFO, + "INFO", + BrbCtlDisplay_ScreenInfo, + + DISPLAY_SCREEN_SUPPLY, + "SUPPLY", + BrbCtlDisplay_ScreenSupply, + + DISPLAY_SCREEN_TEMP, + "TEMP", + BrbCtlDisplay_ScreenTemp, + + DISPLAY_SCREEN_LASTITEM, + NULL, + NULL, +}; +/**********************************************************************************************************************/ +int BrbCtlDisplay_Setup(BrbBase *brb_base) +{ + BrbDisplayBase *display_base = (BrbDisplayBase *)&glob_display_base; + + /* Clean up base */ + memset(&glob_display_base, 0, sizeof(BrbDisplayBase)); + + display_base->brb_base = brb_base; + // display_base->screen_cur = DISPLAY_SCREEN_CORE; + display_base->screen_cur = DISPLAY_SCREEN_INFO; + // display_base->screen_cur = DISPLAY_SCREEN_SUPPLY; + // display_base->screen_cur = DISPLAY_SCREEN_TEMP; + + display_base->pin_led = TFT_LED; + display_base->pin_cs = TFT_CS; + display_base->pin_rst = TFT_RST; + display_base->pin_dc = TFT_DC; + display_base->pin_mosi = TFT_MOSI; + display_base->pin_clk = TFT_CLK; + display_base->pin_miso = TFT_MISO; + + display_base->screen_arr_ptr = (BrbDisplayScreenPrototype *)&glob_display_screen_prototype; + display_base->screen_arr_cnt = DISPLAY_SCREEN_LASTITEM; + + // display_base->tft = (ILI9341_due *)&tft; + display_base->tft = new ILI9341_due(display_base->pin_cs, display_base->pin_dc, display_base->pin_rst); + // display_base->tft = new TFT_eSPI(); + + BrbDisplayBase_Init(display_base); + BrbDisplayBase_ScreenAction(display_base, -1); + + BrbTimerAdd(display_base->brb_base, 5000, 0, BrbCtlDisplay_Timer, display_base); + + return 0; +} +/**********************************************************************************************************************/ +/* DISPLAY */ +/**********************************************************************************************************************/ +static int BrbCtlDisplay_Timer(void *base_ptr, void *cb_data_ptr) +{ + // BrbTimer *timer = (BrbTimer *)base_ptr; + BrbDisplayBase *display_base = (BrbDisplayBase *)cb_data_ptr; + BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; + + BrbDisplayBase_ScreenAction(display_base, -1); + + // display_base->screen_cur++; + + int delay = 5000; + + // switch (pdu_base->state.code) + // { + // case PDU_STATE_START_INIT: + // case PDU_STATE_START_DELAY: + // case PDU_STATE_START_CHECK: + // case PDU_STATE_STOP_INIT: + // case PDU_STATE_STOP_DELAY: + // case PDU_STATE_STOP_CHECK: + // { + // delay = 1500; + // break; + // } + // case PDU_STATE_FAILURE: + // { + // delay = 2500; + // break; + // } + // case PDU_STATE_RUNNING: + // case PDU_STATE_NONE: + // default: + // { + // delay = 5000; + // break; + // } + // } + + BrbTimerAdd(&glob_brb_base, delay, 0, BrbCtlDisplay_Timer, display_base); + + return 0; +} +/**********************************************************************************************************************/ +int BrbCtlDisplay_ScreenInfo(void *brb_base_ptr, void *display_base_ptr) +{ + BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; + BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; + + int pos_x; + int pos_y; + + const char *title_ptr = NULL; + const char *text_ptr = NULL; + int color; + + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_SetBg(display_base); + BrbDisplayBase_SetTitle(display_base, PSTR("INFO")); + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); + } + + // if (!display_base->flags.on_action && display_base->flags.on_select) + // { + // display_base->flags.on_action = 1; + // display_base->action_code = -1; + // } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); + + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, pos_y, 310, 49, DISPLAY_COLOR_BG); + + color = BrbPDUBase_GetStateColor(pdu_base); + title_ptr = BrbPDUBase_GetStateText(pdu_base); + text_ptr = BrbPDUBase_GetFailureText(pdu_base); + + display_base->tft->setTextColor(color, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); + display_base->tft->setTextScale(1); + display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y); + display_base->tft->println((const __FlashStringHelper *)title_ptr); + + if (text_ptr) + { + display_base->tft->setTextColor(DISPLAY_COLOR_TEXT_DEFAULT, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); + display_base->tft->setTextScale(1); + display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y + 35); + display_base->tft->print((const __FlashStringHelper *)text_ptr); + } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 52; + + display_base->box.text_color = color; + display_base->tft->fillRect(pos_x, pos_y + 12, 320 - (DISPLAY_SZ_MARGIN * 2), 35, DISPLAY_COLOR_BG); + BrbDisplayBase_BoxUptime(display_base, pos_x, pos_y, PSTR("State"), (pdu_base->state.delta / 1000)); + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 52; + + display_base->tft->fillRect(pos_x, pos_y + 12, 320 - (DISPLAY_SZ_MARGIN * 2), 35, DISPLAY_COLOR_BG); + display_base->box.text_color = (pdu_base->sensor_power.value < PDU_POWER_MIN_VALUE) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("ENERGIA"), pdu_base->sensor_power.value, 1, PSTR("VAC")); + + display_base->box.text_color = (pdu_base->zero_power.value < PDU_POWER_MIN_HZ) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x + 115, pos_y, PSTR("FREQ"), pdu_base->zero_power.value, 1, PSTR("Hz")); + + display_base->box.text_color = pdu_base->ms.power_delay > 0 ? ILI9341_SEAGREEN : ILI9341_ORANGERED; + BrbDisplayBase_BoxUptime(display_base, pos_x + 200, pos_y, PSTR("Uptime"), pdu_base->ms.power_delay / 1000); + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 52; + + display_base->tft->fillRect(pos_x, pos_y + 12, 320 - (DISPLAY_SZ_MARGIN * 2), 35, DISPLAY_COLOR_BG); + display_base->box.text_color = (pdu_base->sensor_aux.value < PDU_AUX_MIN_VALUE) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("AUXILIAR"), pdu_base->sensor_aux.value, 1, PSTR("VAC")); + + display_base->box.text_color = (pdu_base->zero_aux.value < PDU_AUX_MIN_HZ) ? ILI9341_ORANGERED : ILI9341_SEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x + 115, pos_y, PSTR("FREQ"), pdu_base->zero_aux.value, 1, PSTR("Hz")); + + display_base->box.text_color = pdu_base->ms.aux_delay > 0 ? ILI9341_SEAGREEN : ILI9341_ORANGERED; + BrbDisplayBase_BoxUptime(display_base, pos_x + 200, pos_y, PSTR("Uptime"), pdu_base->ms.aux_delay / 1000); + + display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); + display_base->tft->setTextScale(1); + + return 0; +} +/**********************************************************************************************************************/ +int BrbCtlDisplay_ScreenSupply(void *brb_base_ptr, void *display_base_ptr) +{ + BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; + BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; + + const char *title_ptr = NULL; + const char *text_ptr = NULL; + int color = ILI9341_ORANGERED; + + int pos_x; + int pos_y; + + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_SetBg(display_base); + BrbDisplayBase_SetTitle(display_base, PSTR("Supply")); + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); + } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); + + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, pos_y, 310, 49, DISPLAY_COLOR_BG); + + if ((pdu_base->sensor_sp01_in.value < 12.0) || (pdu_base->sensor_sp01_out.value < 5.0) || (pdu_base->sensor_sp01_out.value > 6.0)) + { + title_ptr = PSTR("Trocar Fonte 01"); + text_ptr = PSTR("Verificar ou trocar equipamento"); + color = ILI9341_ORANGERED; + } + else if ((pdu_base->sensor_sp02_in.value < 12.0) || (pdu_base->sensor_sp02_out.value < 5.0) || (pdu_base->sensor_sp02_out.value > 6.0)) + { + title_ptr = PSTR("Trocar Fonte 02"); + text_ptr = PSTR("Verificar ou trocar equipamento"); + color = ILI9341_ORANGERED; + } + else + { + title_ptr = PSTR("Ativo"); + text_ptr = PSTR("- - - -"); + color = ILI9341_SEAGREEN; + } + + display_base->tft->setTextColor(color, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_VALUE); + display_base->tft->setTextScale(1); + display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y); + display_base->tft->println((const __FlashStringHelper *)title_ptr); + + if (text_ptr) + { + display_base->tft->setTextColor(DISPLAY_COLOR_TEXT_DEFAULT, DISPLAY_COLOR_BG); + display_base->tft->setFont(DISPLAY_FONT_BOX_SUB); + display_base->tft->setTextScale(1); + display_base->tft->cursorToXY(DISPLAY_SZ_MARGIN, pos_y + 35); + display_base->tft->print((const __FlashStringHelper *)text_ptr); + } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = 95; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 110, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = (pdu_base->sensor_sp01_in.value < 12.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("Fonte 01 - IN"), pdu_base->sensor_sp01_in.value, 1, PSTR("VDC")); + + display_base->tft->fillRect(pos_x + 160, pos_y + DISPLAY_SZ_BOX_H, 110, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = (pdu_base->sensor_sp01_out.value < 3.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x + 160, pos_y, PSTR("Fonte 01 - OUT"), pdu_base->sensor_sp01_out.value, 1, PSTR("VDC")); + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 55; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 110, 30, ILI9341_WHITE); + display_base->box.text_color = (pdu_base->sensor_sp02_in.value < 12.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("Fonte 02 - IN"), pdu_base->sensor_sp02_in.value, 1, PSTR("VDC")); + + display_base->tft->fillRect(pos_x + 160, pos_y + DISPLAY_SZ_BOX_H, 110, 30, ILI9341_WHITE); + display_base->box.text_color = (pdu_base->sensor_sp02_out.value < 3.0) ? ILI9341_ORANGERED : ILI9341_MEDIUMSEAGREEN; + BrbDisplayBase_BoxSub(display_base, pos_x + 160, pos_y, PSTR("Fonte 02 - OUT"), pdu_base->sensor_sp02_out.value, 1, PSTR("VDC")); + + return 0; +} +/**********************************************************************************************************************/ +int BrbCtlDisplay_ScreenTemp(void *brb_base_ptr, void *display_base_ptr) +{ + BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; + BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; + + int pos_x; + int pos_y; + + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_SetBg(display_base); + BrbDisplayBase_SetTitle(display_base, PSTR("Temperatura")); + } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); + + BrbDisplayBase_DrawBarGraph(display_base, pos_x, pos_y, 130, pdu_base->dht_data.dht_temp, -50, 150); + + pos_x = 90; + pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 90, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = BrbDisplayBase_Rainbow(map(pdu_base->dht_data.dht_temp, -25, 100, 0, 127)); + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("TEMP"), pdu_base->dht_data.dht_temp, 1, PSTR("C")); + + // BrbDisplayBase_DrawArcSeg(display_base, pdu_base->dht_data.dht_temp, 0, 130, pos_x, pos_y, 100, PSTR("Celsius"), DISPLAY_ARC_GREEN2RED, 0, 3, 5); + + pos_x = pos_x; + pos_y = pos_y + 60; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 90, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = BrbDisplayBase_Rainbow(map(pdu_base->dht_data.dht_humi, -25, 100, 127, 0)); + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("HUMIDADE"), pdu_base->dht_data.dht_humi, 1, PSTR("%")); + + pos_x = pos_x; + pos_y = pos_y + 60; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 90, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = BrbDisplayBase_Rainbow(map(pdu_base->dht_data.dht_hidx, -25, 100, 0, 127)); + BrbDisplayBase_BoxSub(display_base, pos_x, pos_y, PSTR("HEAT INDEX"), pdu_base->dht_data.dht_hidx, 1, PSTR("C")); + + return 0; +} +/**********************************************************************************************************************/ +int BrbCtlDisplay_ScreenCore(void *brb_base_ptr, void *display_base_ptr) +{ + BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; + BrbBase *brb_base = (BrbBase *)brb_base_ptr; + + int pos_x; + int pos_y; + + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_SetBg(display_base); + BrbDisplayBase_SetTitle(display_base, PSTR("Core")); + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); + } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = ILI9341_MIDNIGHTBLUE; + BrbDisplayBase_BoxUptime(display_base, pos_x, pos_y, PSTR("UpTime"), millis() / 1000); + BrbDisplayBase_BoxUptime(display_base, pos_x + 140, pos_y, PSTR("LifeTime"), brb_base->data.lifetime_sec); + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 55; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); + BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("Memoria"), PSTR("%d"), BrbBase_FreeRAM()); + // BrbDisplayBase_BoxSub(display_base, pos_x + 160, pos_y, PSTR("Memoria"), BrbBase_FreeRAM(), 1, PSTR("%")); + + // pos_x = DISPLAY_SZ_MARGIN; + // pos_y = pos_y + 55; + + // display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); + // BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("RX/TX"), PSTR("%lu/%lu"), rs485_sess->stats.byte.rx, rs485_sess->stats.byte.tx); + // BrbDisplayBase_BoxUnit(display_base, pos_x, pos_y + DISPLAY_SZ_BOX_H, PSTR("KB")); + + // BrbDisplayBase_BoxFmt(display_base, pos_x + 160, pos_y, PSTR("Error"), PSTR("%lu/%lu"), + // (rs485_sess->stats.err.bad_char + rs485_sess->stats.err.crc + rs485_sess->stats.err.overflow + rs485_sess->stats.err.pkt), + // (rs485_sess->stats.pkt.err.cmd_id + rs485_sess->stats.pkt.err.cmd_no_bcast + rs485_sess->stats.pkt.err.cmd_no_cb)); + + return 0; +} +/**********************************************************************************************************************/ +int BrbCtlDisplay_ScreenRS485(void *brb_base_ptr, void *display_base_ptr) +{ + BrbDisplayBase *display_base = (BrbDisplayBase *)display_base_ptr; + BrbPDUBase *pdu_base = (BrbPDUBase *)&glob_pdu_base; + BrbBase *brb_base = (BrbBase *)brb_base_ptr; + BrbRS485Session *rs485_sess = (BrbRS485Session *)&glob_rs485_sess; + + int pos_x; + int pos_y; + + if (display_base->screen_cur != display_base->screen_last) + { + BrbDisplayBase_SetBg(display_base); + BrbDisplayBase_SetTitle(display_base, PSTR("RS485")); + display_base->tft->fillRect(DISPLAY_SZ_MARGIN, 89, 310, 1, ILI9341_WHITESMOKE); + } + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = DISPLAY_SZ_TITLE_H + (DISPLAY_SZ_MARGIN * 2); + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 110, 30, DISPLAY_COLOR_BG); + display_base->box.text_color = ILI9341_MIDNIGHTBLUE; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); + BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("UUID"), PSTR("%02x-%02x-%02x-%02x"), rs485_sess->data.uuid[0], rs485_sess->data.uuid[1], rs485_sess->data.uuid[2], rs485_sess->data.uuid[2]); + BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("ADDR"), PSTR("%02x"), rs485_sess->data.address); + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 55; + + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); + BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("Packet RX/TX"), PSTR("%lu/%lu"), rs485_sess->stats.pkt.rx, rs485_sess->stats.pkt.tx); + BrbDisplayBase_BoxFmt(display_base, pos_x + 130, pos_y, PSTR("Me"), PSTR("%lu"), rs485_sess->stats.pkt.me); + BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Broadcast"), PSTR("%lu"), rs485_sess->stats.pkt.bcast); + + pos_x = DISPLAY_SZ_MARGIN; + pos_y = pos_y + 55; + display_base->tft->fillRect(pos_x, pos_y + DISPLAY_SZ_BOX_H, 310, 30, DISPLAY_COLOR_BG); + // + // BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Pkt Error"), PSTR("%lu/%lu/%lu"), rs485_sess->stats.pkt.err.cmd_id, rs485_sess->stats.pkt.err.cmd_no_bcast, rs485_sess->stats.pkt.err.cmd_no_cb); + // BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Pkt Error"), PSTR("%lu/%lu/%lu"), rs485_sess->stats.pkt.err.cmd_id, rs485_sess->stats.pkt.err.cmd_no_bcast, rs485_sess->stats.pkt.err.cmd_no_cb); + + char byte_rx[16]; + char byte_tx[16]; + + dtostrf((double)(rs485_sess->stats.byte.rx / 1024.0), 5, 2, byte_rx); + dtostrf((double)(rs485_sess->stats.byte.tx / 1024.0), 5, 2, byte_tx); + + BrbDisplayBase_BoxFmt(display_base, pos_x, pos_y, PSTR("Bytes RX/TX"), PSTR("%s/%s"), byte_rx, byte_tx); + BrbDisplayBase_BoxFmt(display_base, pos_x + 190, pos_y, PSTR("Error"), PSTR("%lu/%lu/%lu"), rs485_sess->stats.err.bad_char, rs485_sess->stats.err.crc, rs485_sess->stats.err.overflow); + + return 0; +} +/**********************************************************************************************************************/ diff --git a/src/ctl_pdu.cpp b/src/ctl_pdu.cpp index f77ea65..3bfb4cc 100644 --- a/src/ctl_pdu.cpp +++ b/src/ctl_pdu.cpp @@ -1,698 +1,698 @@ -/* - * ctl_pdu.cpp - * - * Created on: 2019-02-18 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "main.h" - -static int BrbPDUBase_TransferPowerToAux(BrbPDUBase *pdu_base); -static int BrbPDUBase_TransferAuxToPower(BrbPDUBase *pdu_base); - -static int BrbPDUBase_TransferON(BrbPDUBase *pdu_base); -static int BrbPDUBase_TransferOFF(BrbPDUBase *pdu_base); -static int BrbPDUBase_PowerSetState(BrbPDUBase *pdu_base, BrbPDUStateCode code, BrbPDUFailureCode fail); - -/**********************************************************************************************************************/ -int BrbPDUBase_Init(BrbPDUBase *pdu_base) -{ - /* Sanitize */ - if (!pdu_base) - return -1; - - /* Read EEPROM */ - BrbBase_EEPROMRead(pdu_base->brb_base, (uint8_t *)&pdu_base->data, sizeof(pdu_base->data), PDU_EEPROM_OFFSET); - - if (pdu_base->dht_data.pin > 0) - pdu_base->dht_sensor = new DHT(pdu_base->dht_data.pin, pdu_base->dht_data.type); - - // pinMode(pdu_base->pin_partida, OUTPUT); - // digitalWrite(pdu_base->pin_partida, PDU_POWER_OFF); - - // pinMode(pdu_base->pin_parada, OUTPUT); - // digitalWrite(pdu_base->pin_parada, PDU_POWER_OFF); - - /* Setup DC Sensor pins */ - if (pdu_base->sensor_sp01_in.pin > 0) - pinMode(pdu_base->sensor_sp01_in.pin, INPUT); - - if (pdu_base->sensor_sp01_out.pin > 0) - pinMode(pdu_base->sensor_sp01_out.pin, INPUT); - - if (pdu_base->sensor_sp02_in.pin > 0) - pinMode(pdu_base->sensor_sp02_in.pin, INPUT); - - if (pdu_base->sensor_sp02_out.pin > 0) - pinMode(pdu_base->sensor_sp02_out.pin, INPUT); - - /* Setup AC Sensor pins */ - if (pdu_base->sensor_power.pin > 0) - pinMode(pdu_base->sensor_power.pin, INPUT); - - if (pdu_base->sensor_aux.pin > 0) - pinMode(pdu_base->sensor_aux.pin, INPUT); - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_DHTCheck(BrbPDUBase *pdu_base) -{ - pdu_base->dht_data.ms_delta = (pdu_base->ms.cur - pdu_base->dht_data.ms_last); - - if ((pdu_base->dht_sensor) && ((pdu_base->dht_data.ms_last <= 0) || (pdu_base->dht_data.ms_delta >= PDU_TIMER_DHT_MS))) - { - pdu_base->dht_data.ms_last = pdu_base->ms.cur; - - pdu_base->dht_data.dht_temp = pdu_base->dht_sensor->readTemperature(); - pdu_base->dht_data.dht_humi = pdu_base->dht_sensor->readHumidity(); - - /* Compute heat index in Celsius (isFahreheit = false) */ - pdu_base->dht_data.dht_hidx = pdu_base->dht_sensor->computeHeatIndex(pdu_base->dht_data.dht_temp, pdu_base->dht_data.dht_humi, false); - - pdu_base->dht_data.dht_temp = isnan(pdu_base->dht_data.dht_temp) ? 0.0 : pdu_base->dht_data.dht_temp; - pdu_base->dht_data.dht_humi = isnan(pdu_base->dht_data.dht_humi) ? 0.0 : pdu_base->dht_data.dht_humi; - pdu_base->dht_data.dht_hidx = isnan(pdu_base->dht_data.dht_hidx) ? 0.0 : pdu_base->dht_data.dht_hidx; - } - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_SupplyCheck(BrbPDUBase *pdu_base) -{ -#define RDC1 30000.0 -#define RDC2 7500.0 -#define RDCR (RDC2 / (RDC2 + RDC1)) - - pdu_base->sensor_sp01_in.value = ((analogRead(pdu_base->sensor_sp01_in.pin) * 5.0) / 1024.0) / RDCR; - pdu_base->sensor_sp01_out.value = ((analogRead(pdu_base->sensor_sp01_out.pin) * 5.0) / 1024.0) / RDCR; - - pdu_base->sensor_sp02_in.value = ((analogRead(pdu_base->sensor_sp02_in.pin) * 5.0) / 1024.0) / RDCR; - pdu_base->sensor_sp02_out.value = ((analogRead(pdu_base->sensor_sp02_out.pin) * 5.0) / 1024.0) / RDCR; - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_PowerCheck(BrbPDUBase *pdu_base) -{ - pdu_base->zerocross.ms_delta = (pdu_base->ms.cur - pdu_base->zerocross.ms_last); - - /* We are waiting delay */ - if ((pdu_base->zerocross.ms_last <= 0) || (pdu_base->zerocross.ms_delta >= PDU_TIMER_ZERO_WAIT_MS)) - { - pdu_base->zerocross.ms_last = pdu_base->ms.cur; - - noInterrupts(); - pdu_base->zero_power.value = (pdu_base->zero_power.counter / (pdu_base->zerocross.ms_delta / 1000.0)) / 2.0; - pdu_base->zero_power.counter = 0; - - pdu_base->zero_aux.value = (pdu_base->zero_aux.counter / (pdu_base->zerocross.ms_delta / 1000.0)) / 2.0; - pdu_base->zero_aux.counter = 0; - interrupts(); - } - -#define RAC1 220000.0 -#define RAC2 10000.0 -// #define RACR (RAC2 / (RAC2 + RAC1)) -#define RACR 0.0165 - - pdu_base->sensor.ms_delta = (pdu_base->ms.cur - pdu_base->sensor.ms_last); - - /* We are waiting delay */ - if ((pdu_base->sensor.ms_last <= 0) || (pdu_base->sensor.ms_delta >= PDU_TIMER_SENSOR_WAIT_MS)) - { - pdu_base->sensor.ms_last = pdu_base->ms.cur; - long samples_value; - int i; - - /* Read sensor data */ - if (pdu_base->sensor_power.pin > 0) - { - for (i = 0, samples_value = 0; i < PDU_TIMER_SENSOR_SAMPLES; i++) - { - samples_value += analogRead(pdu_base->sensor_power.pin); - } - - samples_value /= PDU_TIMER_SENSOR_SAMPLES; - pdu_base->sensor_power.value = ((samples_value * 5.0) / 1023.0) / RACR; - // pdu_base->sensor_power.value = ((analogRead(pdu_base->sensor_power.pin) * 5.0) / 1023.0) / RACR; - } - - if (pdu_base->sensor_aux.pin > 0) - { - for (i = 0, samples_value = 0; i < PDU_TIMER_SENSOR_SAMPLES; i++) - { - samples_value += analogRead(pdu_base->sensor_aux.pin); - } - - samples_value /= PDU_TIMER_SENSOR_SAMPLES; - pdu_base->sensor_aux.value = ((samples_value * 5.0) / 1023.0) / RACR; - // pdu_base->sensor_aux.value = ((analogRead(pdu_base->sensor_aux.pin) * 5.0) / 1023.0) / RACR; - } - - if (pdu_base->sensor_power.value > PDU_POWER_MIN_VALUE && pdu_base->zero_power.value > PDU_POWER_MIN_HZ) - { - if (pdu_base->ms.power_time <= 0) - pdu_base->ms.power_time = pdu_base->ms.cur; - - pdu_base->ms.power_delay = (pdu_base->ms.cur - pdu_base->ms.power_time); - } - else - { - pdu_base->ms.power_delay = -1; - pdu_base->ms.power_time = -1; - } - - if (pdu_base->sensor_aux.value > PDU_AUX_MIN_VALUE && pdu_base->zero_aux.value > PDU_AUX_MIN_HZ) - { - if (pdu_base->ms.aux_time <= 0) - pdu_base->ms.aux_time = pdu_base->ms.cur; - - pdu_base->ms.aux_delay = (pdu_base->ms.cur - pdu_base->ms.aux_time); - } - else - { - pdu_base->ms.aux_delay = -1; - pdu_base->ms.aux_time = -1; - } - } - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_Loop(BrbPDUBase *pdu_base) -{ - pdu_base->ms.delay = pdu_base->brb_base->ms.cur - pdu_base->ms.last; - - /* Loop Delay */ - if (pdu_base->ms.delay < 50) - return -1; - - pdu_base->ms.last = pdu_base->ms.cur; - pdu_base->ms.cur = pdu_base->brb_base->ms.cur; - pdu_base->state.delta = (pdu_base->ms.cur - pdu_base->state.time); - - BrbPDUBase_DHTCheck(pdu_base); - - BrbPDUBase_SupplyCheck(pdu_base); - - BrbPDUBase_PowerCheck(pdu_base); - - switch (pdu_base->state.code) - { - case PDU_STATE_NONE: - { - /* Starting system, check for power */ - if (pdu_base->ms.power_delay > PDU_TIMER_POWER_MIN_MS) - { - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_RUNNING_POWER, PDU_FAILURE_NONE); - - BrbToneBase_PlayArrive(pdu_base->tone_base); - - break; - } - - /* Update time */ - if (pdu_base->state.time == 0) - pdu_base->state.time = pdu_base->ms.cur; - - break; - } - case PDU_STATE_RUNNING_POWER: - { - /* Check Power */ - if (pdu_base->sensor_power.value < PDU_POWER_MIN_VALUE && pdu_base->zero_power.value < PDU_POWER_MIN_HZ) - { - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, PDU_FAILURE_POWER_DOWN); - - BrbToneBase_PlayAlarm3(pdu_base->tone_base); - - break; - } - - break; - } - case PDU_STATE_RUNNING_AUX: - { - /* We are waiting delay */ - if ((pdu_base->state.time > 0) && (pdu_base->state.delta < (PDU_TIMER_AUX_MIN_MS * 2))) - break; - - /* We got energy back, transfer back */ - if (!pdu_base->flags.transfer_force && pdu_base->ms.power_delay > PDU_TIMER_AUX_MIN_MS) - { - BrbPDUBase_TransferAuxToPower(pdu_base); - - break; - } - - /* Check Power */ - if (pdu_base->sensor_aux.value < PDU_AUX_MIN_VALUE && pdu_base->zero_aux.value < PDU_AUX_MIN_HZ) - { - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, PDU_FAILURE_AUX_DOWN); - - BrbToneBase_PlayAlarm3(pdu_base->tone_base); - - break; - } - - break; - } - case PDU_STATE_TRANSF_P2A_DELAY: - { - /* Can't transfer P2A */ - if (!pdu_base->flags.transfer_enabled) - { - return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, PDU_FAILURE_CANT_P2A); - } - - /* We are waiting delay */ - if ((pdu_base->state.time > 0) && (pdu_base->state.delta < PDU_TIMER_TRANSF_P2A_WAIT_MS)) - break; - - /* Min time without energy */ - if (!pdu_base->flags.transfer_force && pdu_base->ms.aux_delay < PDU_TIMER_AUX_MIN_MS) - { - pdu_base->state.time = PDU_TIMER_TRANSF_P2A_WAIT_MS / 2; - - break; - } - - /* Transfer */ - BrbPDUBase_TransferON(pdu_base); - - BrbToneBase_PlayArrive(pdu_base->tone_base); - - break; - } - case PDU_STATE_TRANSF_A2P_DELAY: - { - /* We are waiting delay */ - if ((pdu_base->state.time > 0) && (pdu_base->state.delta < PDU_TIMER_TRANSF_A2P_WAIT_MS)) - break; - - /* Transfer */ - BrbPDUBase_TransferOFF(pdu_base); - - BrbToneBase_PlayLeave(pdu_base->tone_base); - - break; - } - case PDU_STATE_FAILURE: - { - /* We are waiting delay */ - if ((pdu_base->state.time > 0) && (pdu_base->state.delta < PDU_TIMER_FAIL_WAIT_MS)) - break; - - BrbToneBase_PlayAlarm3(pdu_base->tone_base); - - switch (pdu_base->state.fail) - { - case PDU_FAILURE_POWER_DOWN: - { - /* Power is up again, reset, so we can initiate */ - if (pdu_base->sensor_power.value >= PDU_POWER_MIN_VALUE && pdu_base->zero_power.value > PDU_POWER_MIN_HZ) - { - return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); - } - - if (pdu_base->ms.aux_delay > 0) - { - /* We can transfer to auxiliary */ - if (pdu_base->flags.transfer_enabled) - { - return BrbPDUBase_TransferPowerToAux(pdu_base); - } - } - - break; - } - case PDU_FAILURE_AUX_DOWN: - { - if (pdu_base->sensor_aux.value >= PDU_AUX_MIN_VALUE && pdu_base->zero_aux.value > PDU_AUX_MIN_HZ) - { - return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); - } - - break; - } - default: - { - return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); - break; - } - } - - /* Reset failure */ - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, pdu_base->state.fail); - - break; - } - } - - return 0; -} -/**********************************************************************************************************************/ -static int BrbPDUBase_TransferPowerToAux(BrbPDUBase *pdu_base) -{ - BrbToneBase_PlayAlarm2(pdu_base->tone_base); - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_P2A_DELAY, PDU_FAILURE_NONE); - - pdu_base->state.retry++; - - return 0; -} -/**********************************************************************************************************************/ -static int BrbPDUBase_TransferAuxToPower(BrbPDUBase *pdu_base) -{ - BrbToneBase_PlayAlarm3(pdu_base->tone_base); - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_A2P_DELAY, PDU_FAILURE_NONE); - - pdu_base->state.retry++; - - return 0; -} -/**********************************************************************************************************************/ -static int BrbPDUBase_TransferON(BrbPDUBase *pdu_base) -{ - /* Set pin data */ - digitalWrite(pdu_base->pin_transfer, PDU_POWER_ON); - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_RUNNING_AUX, PDU_FAILURE_NONE); - - return 0; -} -/**********************************************************************************************************************/ -static int BrbPDUBase_TransferOFF(BrbPDUBase *pdu_base) -{ - /* Set pin data */ - digitalWrite(pdu_base->pin_transfer, PDU_POWER_OFF); - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_RUNNING_POWER, PDU_FAILURE_NONE); - - return 0; -} -/**********************************************************************************************************************/ -static int BrbPDUBase_PowerSetState(BrbPDUBase *pdu_base, BrbPDUStateCode code, BrbPDUFailureCode fail) -{ - pdu_base->state.delta = 0; - pdu_base->state.code = code; - pdu_base->state.fail = fail; - pdu_base->state.time = pdu_base->ms.cur; - - BrbRS485PacketVal rs485_pkt_val = {0}; - - if (code == PDU_STATE_FAILURE) - { - rs485_pkt_val.type = RS485_PKT_DATA_TYPE_NOTIFY; - rs485_pkt_val.code = fail; - } - else - { - rs485_pkt_val.type = RS485_PKT_DATA_TYPE_INFORM; - rs485_pkt_val.code = code; - } - - /* Send RS485 to notify the network */ - BrbRS485Session_SendPacketData(&glob_rs485_sess, 0xFF, &rs485_pkt_val); - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_ActionCmd(BrbPDUBase *pdu_base, int cmd_code) -{ - switch (cmd_code) - { - case PDU_ACTION_TRANSFER_ENABLE: - { - pdu_base->flags.transfer_enabled = 1; - - switch (pdu_base->state.code) - { - case PDU_STATE_TRANSF_P2A_DELAY: - case PDU_STATE_RUNNING_AUX: - { - return 1; - } - case PDU_STATE_TRANSF_A2P_DELAY: - case PDU_STATE_RUNNING_POWER: - case PDU_STATE_FAILURE: - default: - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_P2A_DELAY, PDU_FAILURE_NONE); - - BrbToneBase_PlayAction(pdu_base->tone_base); - break; - } - - break; - } - case PDU_ACTION_TRANSFER_FORCE: - { - pdu_base->flags.transfer_force = 1; - pdu_base->flags.transfer_enabled = 1; - - switch (pdu_base->state.code) - { - case PDU_STATE_TRANSF_P2A_DELAY: - case PDU_STATE_RUNNING_AUX: - { - return 1; - } - case PDU_STATE_TRANSF_A2P_DELAY: - case PDU_STATE_RUNNING_POWER: - case PDU_STATE_FAILURE: - default: - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_P2A_DELAY, PDU_FAILURE_NONE); - - BrbToneBase_PlayAction(pdu_base->tone_base); - break; - } - - break; - } - case PDU_ACTION_TRANSFER_DISABLE: - { - pdu_base->flags.transfer_enabled = 0; - - switch (pdu_base->state.code) - { - case PDU_STATE_TRANSF_A2P_DELAY: - case PDU_STATE_RUNNING_POWER: - { - return 1; - } - case PDU_STATE_TRANSF_P2A_DELAY: - case PDU_STATE_RUNNING_AUX: - case PDU_STATE_FAILURE: - default: - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_A2P_DELAY, PDU_FAILURE_NONE); - - BrbToneBase_PlayAction(pdu_base->tone_base); - break; - } - - break; - } - case PDU_ACTION_NONE: - { - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); - - break; - } - default: - return -1; - } - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_FailureConfirm(BrbPDUBase *pdu_base) -{ - // BrbBase *brb_base = pdu_base->brb_base; - - BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); - - BrbToneBase_PlayAction(pdu_base->tone_base); - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_HourmeterReset(BrbPDUBase *pdu_base) -{ - if (!pdu_base) - return -1; - - pdu_base->data.hourmeter_time = 0; - pdu_base->data.hourmeter_reset++; - - BrbPDUBase_Save(pdu_base); - - return 0; -} -/**********************************************************************************************************************/ -int BrbPDUBase_Save(BrbPDUBase *pdu_base) -{ - if (!pdu_base || !pdu_base->brb_base) - return -1; - - /* Read EEPROM */ - BrbBase_EEPROMWrite(pdu_base->brb_base, (uint8_t *)&pdu_base->data, sizeof(pdu_base->data), PDU_EEPROM_OFFSET); - - return 0; -} -/**********************************************************************************************************************/ -const char *BrbPDUBase_GetStateText(BrbPDUBase *pdu_base) -{ - const char *ret_ptr = PSTR("Parado"); - - switch (pdu_base->state.code) - { - case PDU_STATE_RUNNING_POWER: - { - ret_ptr = PSTR("Carga Ativa"); - break; - } - case PDU_STATE_RUNNING_AUX: - { - ret_ptr = PSTR("Auxiliar Ativo"); - break; - } - case PDU_STATE_TRANSF_P2A_DELAY: - { - ret_ptr = PSTR("Transferindo"); - break; - } - case PDU_STATE_TRANSF_A2P_DELAY: - { - ret_ptr = PSTR("Desacoplando"); - break; - } - case PDU_STATE_FAILURE: - { - switch (pdu_base->state.fail) - { - case PDU_FAILURE_POWER_DOWN: - { - ret_ptr = PSTR("FALHA - Sem Carga"); - break; - } - case PDU_FAILURE_AUX_DOWN: - { - ret_ptr = PSTR("FALHA - Auxiliar"); - break; - } - default: - { - break; - } - } - - break; - } - case PDU_STATE_NONE: - default: - { - /**/ - break; - } - } - - return ret_ptr; -} -/**********************************************************************************************************************/ -uint16_t BrbPDUBase_GetStateColor(BrbPDUBase *pdu_base) -{ - uint16_t color = ILI9341_BLUE; - - switch (pdu_base->state.code) - { - case PDU_STATE_RUNNING_POWER: - { - color = ILI9341_SEAGREEN; - break; - } - case PDU_STATE_RUNNING_AUX: - { - color = ILI9341_ORANGE; - break; - } - case PDU_STATE_TRANSF_P2A_DELAY: - case PDU_STATE_TRANSF_A2P_DELAY: - { - color = ILI9341_PURPLE; - break; - } - case PDU_STATE_FAILURE: - { - color = ILI9341_ORANGERED; - break; - } - case PDU_STATE_NONE: - { - color = ILI9341_DARKSEAGREEN; - break; - } - default: - { - /**/ - } - } - - return color; -} -/**********************************************************************************************************************/ -const char *BrbPDUBase_GetFailureText(BrbPDUBase *pdu_base) -{ - const char *ret_ptr = PSTR("- - - - -"); - - switch (pdu_base->state.fail) - { - case PDU_FAILURE_POWER_DOWN: - { - ret_ptr = PSTR("Verificar Carga"); - break; - } - case PDU_FAILURE_AUX_DOWN: - { - ret_ptr = PSTR("Verificar Auxiliar"); - break; - } - default: - { - break; - } - } - - return ret_ptr; -} +/* + * ctl_pdu.cpp + * + * Created on: 2019-02-18 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "main.h" + +static int BrbPDUBase_TransferPowerToAux(BrbPDUBase *pdu_base); +static int BrbPDUBase_TransferAuxToPower(BrbPDUBase *pdu_base); + +static int BrbPDUBase_TransferON(BrbPDUBase *pdu_base); +static int BrbPDUBase_TransferOFF(BrbPDUBase *pdu_base); +static int BrbPDUBase_PowerSetState(BrbPDUBase *pdu_base, BrbPDUStateCode code, BrbPDUFailureCode fail); + +/**********************************************************************************************************************/ +int BrbPDUBase_Init(BrbPDUBase *pdu_base) +{ + /* Sanitize */ + if (!pdu_base) + return -1; + + /* Read EEPROM */ + BrbBase_EEPROMRead(pdu_base->brb_base, (uint8_t *)&pdu_base->data, sizeof(pdu_base->data), PDU_EEPROM_OFFSET); + + if (pdu_base->dht_data.pin > 0) + pdu_base->dht_sensor = new DHT(pdu_base->dht_data.pin, pdu_base->dht_data.type); + + // pinMode(pdu_base->pin_partida, OUTPUT); + // digitalWrite(pdu_base->pin_partida, PDU_POWER_OFF); + + // pinMode(pdu_base->pin_parada, OUTPUT); + // digitalWrite(pdu_base->pin_parada, PDU_POWER_OFF); + + /* Setup DC Sensor pins */ + if (pdu_base->sensor_sp01_in.pin > 0) + pinMode(pdu_base->sensor_sp01_in.pin, INPUT); + + if (pdu_base->sensor_sp01_out.pin > 0) + pinMode(pdu_base->sensor_sp01_out.pin, INPUT); + + if (pdu_base->sensor_sp02_in.pin > 0) + pinMode(pdu_base->sensor_sp02_in.pin, INPUT); + + if (pdu_base->sensor_sp02_out.pin > 0) + pinMode(pdu_base->sensor_sp02_out.pin, INPUT); + + /* Setup AC Sensor pins */ + if (pdu_base->sensor_power.pin > 0) + pinMode(pdu_base->sensor_power.pin, INPUT); + + if (pdu_base->sensor_aux.pin > 0) + pinMode(pdu_base->sensor_aux.pin, INPUT); + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_DHTCheck(BrbPDUBase *pdu_base) +{ + pdu_base->dht_data.ms_delta = (pdu_base->ms.cur - pdu_base->dht_data.ms_last); + + if ((pdu_base->dht_sensor) && ((pdu_base->dht_data.ms_last <= 0) || (pdu_base->dht_data.ms_delta >= PDU_TIMER_DHT_MS))) + { + pdu_base->dht_data.ms_last = pdu_base->ms.cur; + + pdu_base->dht_data.dht_temp = pdu_base->dht_sensor->readTemperature(); + pdu_base->dht_data.dht_humi = pdu_base->dht_sensor->readHumidity(); + + /* Compute heat index in Celsius (isFahreheit = false) */ + pdu_base->dht_data.dht_hidx = pdu_base->dht_sensor->computeHeatIndex(pdu_base->dht_data.dht_temp, pdu_base->dht_data.dht_humi, false); + + pdu_base->dht_data.dht_temp = isnan(pdu_base->dht_data.dht_temp) ? 0.0 : pdu_base->dht_data.dht_temp; + pdu_base->dht_data.dht_humi = isnan(pdu_base->dht_data.dht_humi) ? 0.0 : pdu_base->dht_data.dht_humi; + pdu_base->dht_data.dht_hidx = isnan(pdu_base->dht_data.dht_hidx) ? 0.0 : pdu_base->dht_data.dht_hidx; + } + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_SupplyCheck(BrbPDUBase *pdu_base) +{ +#define RDC1 30000.0 +#define RDC2 7500.0 +#define RDCR (RDC2 / (RDC2 + RDC1)) + + pdu_base->sensor_sp01_in.value = ((analogRead(pdu_base->sensor_sp01_in.pin) * 5.0) / 1024.0) / RDCR; + pdu_base->sensor_sp01_out.value = ((analogRead(pdu_base->sensor_sp01_out.pin) * 5.0) / 1024.0) / RDCR; + + pdu_base->sensor_sp02_in.value = ((analogRead(pdu_base->sensor_sp02_in.pin) * 5.0) / 1024.0) / RDCR; + pdu_base->sensor_sp02_out.value = ((analogRead(pdu_base->sensor_sp02_out.pin) * 5.0) / 1024.0) / RDCR; + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_PowerCheck(BrbPDUBase *pdu_base) +{ + pdu_base->zerocross.ms_delta = (pdu_base->ms.cur - pdu_base->zerocross.ms_last); + + /* We are waiting delay */ + if ((pdu_base->zerocross.ms_last <= 0) || (pdu_base->zerocross.ms_delta >= PDU_TIMER_ZERO_WAIT_MS)) + { + pdu_base->zerocross.ms_last = pdu_base->ms.cur; + + noInterrupts(); + pdu_base->zero_power.value = (pdu_base->zero_power.counter / (pdu_base->zerocross.ms_delta / 1000.0)) / 2.0; + pdu_base->zero_power.counter = 0; + + pdu_base->zero_aux.value = (pdu_base->zero_aux.counter / (pdu_base->zerocross.ms_delta / 1000.0)) / 2.0; + pdu_base->zero_aux.counter = 0; + interrupts(); + } + +#define RAC1 220000.0 +#define RAC2 10000.0 +// #define RACR (RAC2 / (RAC2 + RAC1)) +#define RACR 0.0165 + + pdu_base->sensor.ms_delta = (pdu_base->ms.cur - pdu_base->sensor.ms_last); + + /* We are waiting delay */ + if ((pdu_base->sensor.ms_last <= 0) || (pdu_base->sensor.ms_delta >= PDU_TIMER_SENSOR_WAIT_MS)) + { + pdu_base->sensor.ms_last = pdu_base->ms.cur; + long samples_value; + int i; + + /* Read sensor data */ + if (pdu_base->sensor_power.pin > 0) + { + for (i = 0, samples_value = 0; i < PDU_TIMER_SENSOR_SAMPLES; i++) + { + samples_value += analogRead(pdu_base->sensor_power.pin); + } + + samples_value /= PDU_TIMER_SENSOR_SAMPLES; + pdu_base->sensor_power.value = ((samples_value * 5.0) / 1023.0) / RACR; + // pdu_base->sensor_power.value = ((analogRead(pdu_base->sensor_power.pin) * 5.0) / 1023.0) / RACR; + } + + if (pdu_base->sensor_aux.pin > 0) + { + for (i = 0, samples_value = 0; i < PDU_TIMER_SENSOR_SAMPLES; i++) + { + samples_value += analogRead(pdu_base->sensor_aux.pin); + } + + samples_value /= PDU_TIMER_SENSOR_SAMPLES; + pdu_base->sensor_aux.value = ((samples_value * 5.0) / 1023.0) / RACR; + // pdu_base->sensor_aux.value = ((analogRead(pdu_base->sensor_aux.pin) * 5.0) / 1023.0) / RACR; + } + + if (pdu_base->sensor_power.value > PDU_POWER_MIN_VALUE && pdu_base->zero_power.value > PDU_POWER_MIN_HZ) + { + if (pdu_base->ms.power_time <= 0) + pdu_base->ms.power_time = pdu_base->ms.cur; + + pdu_base->ms.power_delay = (pdu_base->ms.cur - pdu_base->ms.power_time); + } + else + { + pdu_base->ms.power_delay = -1; + pdu_base->ms.power_time = -1; + } + + if (pdu_base->sensor_aux.value > PDU_AUX_MIN_VALUE && pdu_base->zero_aux.value > PDU_AUX_MIN_HZ) + { + if (pdu_base->ms.aux_time <= 0) + pdu_base->ms.aux_time = pdu_base->ms.cur; + + pdu_base->ms.aux_delay = (pdu_base->ms.cur - pdu_base->ms.aux_time); + } + else + { + pdu_base->ms.aux_delay = -1; + pdu_base->ms.aux_time = -1; + } + } + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_Loop(BrbPDUBase *pdu_base) +{ + pdu_base->ms.delay = pdu_base->brb_base->ms.cur - pdu_base->ms.last; + + /* Loop Delay */ + if (pdu_base->ms.delay < 50) + return -1; + + pdu_base->ms.last = pdu_base->ms.cur; + pdu_base->ms.cur = pdu_base->brb_base->ms.cur; + pdu_base->state.delta = (pdu_base->ms.cur - pdu_base->state.time); + + BrbPDUBase_DHTCheck(pdu_base); + + BrbPDUBase_SupplyCheck(pdu_base); + + BrbPDUBase_PowerCheck(pdu_base); + + switch (pdu_base->state.code) + { + case PDU_STATE_NONE: + { + /* Starting system, check for power */ + if (pdu_base->ms.power_delay > PDU_TIMER_POWER_MIN_MS) + { + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_RUNNING_POWER, PDU_FAILURE_NONE); + + BrbToneBase_PlayArrive(pdu_base->tone_base); + + break; + } + + /* Update time */ + if (pdu_base->state.time == 0) + pdu_base->state.time = pdu_base->ms.cur; + + break; + } + case PDU_STATE_RUNNING_POWER: + { + /* Check Power */ + if (pdu_base->sensor_power.value < PDU_POWER_MIN_VALUE && pdu_base->zero_power.value < PDU_POWER_MIN_HZ) + { + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, PDU_FAILURE_POWER_DOWN); + + BrbToneBase_PlayAlarm3(pdu_base->tone_base); + + break; + } + + break; + } + case PDU_STATE_RUNNING_AUX: + { + /* We are waiting delay */ + if ((pdu_base->state.time > 0) && (pdu_base->state.delta < (PDU_TIMER_AUX_MIN_MS * 2))) + break; + + /* We got energy back, transfer back */ + if (!pdu_base->flags.transfer_force && pdu_base->ms.power_delay > PDU_TIMER_AUX_MIN_MS) + { + BrbPDUBase_TransferAuxToPower(pdu_base); + + break; + } + + /* Check Power */ + if (pdu_base->sensor_aux.value < PDU_AUX_MIN_VALUE && pdu_base->zero_aux.value < PDU_AUX_MIN_HZ) + { + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, PDU_FAILURE_AUX_DOWN); + + BrbToneBase_PlayAlarm3(pdu_base->tone_base); + + break; + } + + break; + } + case PDU_STATE_TRANSF_P2A_DELAY: + { + /* Can't transfer P2A */ + if (!pdu_base->flags.transfer_enabled) + { + return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, PDU_FAILURE_CANT_P2A); + } + + /* We are waiting delay */ + if ((pdu_base->state.time > 0) && (pdu_base->state.delta < PDU_TIMER_TRANSF_P2A_WAIT_MS)) + break; + + /* Min time without energy */ + if (!pdu_base->flags.transfer_force && pdu_base->ms.aux_delay < PDU_TIMER_AUX_MIN_MS) + { + pdu_base->state.time = PDU_TIMER_TRANSF_P2A_WAIT_MS / 2; + + break; + } + + /* Transfer */ + BrbPDUBase_TransferON(pdu_base); + + BrbToneBase_PlayArrive(pdu_base->tone_base); + + break; + } + case PDU_STATE_TRANSF_A2P_DELAY: + { + /* We are waiting delay */ + if ((pdu_base->state.time > 0) && (pdu_base->state.delta < PDU_TIMER_TRANSF_A2P_WAIT_MS)) + break; + + /* Transfer */ + BrbPDUBase_TransferOFF(pdu_base); + + BrbToneBase_PlayLeave(pdu_base->tone_base); + + break; + } + case PDU_STATE_FAILURE: + { + /* We are waiting delay */ + if ((pdu_base->state.time > 0) && (pdu_base->state.delta < PDU_TIMER_FAIL_WAIT_MS)) + break; + + BrbToneBase_PlayAlarm3(pdu_base->tone_base); + + switch (pdu_base->state.fail) + { + case PDU_FAILURE_POWER_DOWN: + { + /* Power is up again, reset, so we can initiate */ + if (pdu_base->sensor_power.value >= PDU_POWER_MIN_VALUE && pdu_base->zero_power.value > PDU_POWER_MIN_HZ) + { + return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); + } + + if (pdu_base->ms.aux_delay > 0) + { + /* We can transfer to auxiliary */ + if (pdu_base->flags.transfer_enabled) + { + return BrbPDUBase_TransferPowerToAux(pdu_base); + } + } + + break; + } + case PDU_FAILURE_AUX_DOWN: + { + if (pdu_base->sensor_aux.value >= PDU_AUX_MIN_VALUE && pdu_base->zero_aux.value > PDU_AUX_MIN_HZ) + { + return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); + } + + break; + } + default: + { + return BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); + break; + } + } + + /* Reset failure */ + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_FAILURE, pdu_base->state.fail); + + break; + } + } + + return 0; +} +/**********************************************************************************************************************/ +static int BrbPDUBase_TransferPowerToAux(BrbPDUBase *pdu_base) +{ + BrbToneBase_PlayAlarm2(pdu_base->tone_base); + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_P2A_DELAY, PDU_FAILURE_NONE); + + pdu_base->state.retry++; + + return 0; +} +/**********************************************************************************************************************/ +static int BrbPDUBase_TransferAuxToPower(BrbPDUBase *pdu_base) +{ + BrbToneBase_PlayAlarm3(pdu_base->tone_base); + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_A2P_DELAY, PDU_FAILURE_NONE); + + pdu_base->state.retry++; + + return 0; +} +/**********************************************************************************************************************/ +static int BrbPDUBase_TransferON(BrbPDUBase *pdu_base) +{ + /* Set pin data */ + digitalWrite(pdu_base->pin_transfer, PDU_POWER_ON); + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_RUNNING_AUX, PDU_FAILURE_NONE); + + return 0; +} +/**********************************************************************************************************************/ +static int BrbPDUBase_TransferOFF(BrbPDUBase *pdu_base) +{ + /* Set pin data */ + digitalWrite(pdu_base->pin_transfer, PDU_POWER_OFF); + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_RUNNING_POWER, PDU_FAILURE_NONE); + + return 0; +} +/**********************************************************************************************************************/ +static int BrbPDUBase_PowerSetState(BrbPDUBase *pdu_base, BrbPDUStateCode code, BrbPDUFailureCode fail) +{ + pdu_base->state.delta = 0; + pdu_base->state.code = code; + pdu_base->state.fail = fail; + pdu_base->state.time = pdu_base->ms.cur; + + BrbRS485PacketVal rs485_pkt_val = {0}; + + if (code == PDU_STATE_FAILURE) + { + rs485_pkt_val.type = RS485_PKT_DATA_TYPE_NOTIFY; + rs485_pkt_val.code = fail; + } + else + { + rs485_pkt_val.type = RS485_PKT_DATA_TYPE_INFORM; + rs485_pkt_val.code = code; + } + + /* Send RS485 to notify the network */ + BrbRS485Session_SendPacketData(&glob_rs485_sess, 0xFF, &rs485_pkt_val); + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_ActionCmd(BrbPDUBase *pdu_base, int cmd_code) +{ + switch (cmd_code) + { + case PDU_ACTION_TRANSFER_ENABLE: + { + pdu_base->flags.transfer_enabled = 1; + + switch (pdu_base->state.code) + { + case PDU_STATE_TRANSF_P2A_DELAY: + case PDU_STATE_RUNNING_AUX: + { + return 1; + } + case PDU_STATE_TRANSF_A2P_DELAY: + case PDU_STATE_RUNNING_POWER: + case PDU_STATE_FAILURE: + default: + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_P2A_DELAY, PDU_FAILURE_NONE); + + BrbToneBase_PlayAction(pdu_base->tone_base); + break; + } + + break; + } + case PDU_ACTION_TRANSFER_FORCE: + { + pdu_base->flags.transfer_force = 1; + pdu_base->flags.transfer_enabled = 1; + + switch (pdu_base->state.code) + { + case PDU_STATE_TRANSF_P2A_DELAY: + case PDU_STATE_RUNNING_AUX: + { + return 1; + } + case PDU_STATE_TRANSF_A2P_DELAY: + case PDU_STATE_RUNNING_POWER: + case PDU_STATE_FAILURE: + default: + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_P2A_DELAY, PDU_FAILURE_NONE); + + BrbToneBase_PlayAction(pdu_base->tone_base); + break; + } + + break; + } + case PDU_ACTION_TRANSFER_DISABLE: + { + pdu_base->flags.transfer_enabled = 0; + + switch (pdu_base->state.code) + { + case PDU_STATE_TRANSF_A2P_DELAY: + case PDU_STATE_RUNNING_POWER: + { + return 1; + } + case PDU_STATE_TRANSF_P2A_DELAY: + case PDU_STATE_RUNNING_AUX: + case PDU_STATE_FAILURE: + default: + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_TRANSF_A2P_DELAY, PDU_FAILURE_NONE); + + BrbToneBase_PlayAction(pdu_base->tone_base); + break; + } + + break; + } + case PDU_ACTION_NONE: + { + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); + + break; + } + default: + return -1; + } + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_FailureConfirm(BrbPDUBase *pdu_base) +{ + // BrbBase *brb_base = pdu_base->brb_base; + + BrbPDUBase_PowerSetState(pdu_base, PDU_STATE_NONE, PDU_FAILURE_NONE); + + BrbToneBase_PlayAction(pdu_base->tone_base); + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_HourmeterReset(BrbPDUBase *pdu_base) +{ + if (!pdu_base) + return -1; + + pdu_base->data.hourmeter_time = 0; + pdu_base->data.hourmeter_reset++; + + BrbPDUBase_Save(pdu_base); + + return 0; +} +/**********************************************************************************************************************/ +int BrbPDUBase_Save(BrbPDUBase *pdu_base) +{ + if (!pdu_base || !pdu_base->brb_base) + return -1; + + /* Read EEPROM */ + BrbBase_EEPROMWrite(pdu_base->brb_base, (uint8_t *)&pdu_base->data, sizeof(pdu_base->data), PDU_EEPROM_OFFSET); + + return 0; +} +/**********************************************************************************************************************/ +const char *BrbPDUBase_GetStateText(BrbPDUBase *pdu_base) +{ + const char *ret_ptr = PSTR("Parado"); + + switch (pdu_base->state.code) + { + case PDU_STATE_RUNNING_POWER: + { + ret_ptr = PSTR("Carga Ativa"); + break; + } + case PDU_STATE_RUNNING_AUX: + { + ret_ptr = PSTR("Auxiliar Ativo"); + break; + } + case PDU_STATE_TRANSF_P2A_DELAY: + { + ret_ptr = PSTR("Transferindo"); + break; + } + case PDU_STATE_TRANSF_A2P_DELAY: + { + ret_ptr = PSTR("Desacoplando"); + break; + } + case PDU_STATE_FAILURE: + { + switch (pdu_base->state.fail) + { + case PDU_FAILURE_POWER_DOWN: + { + ret_ptr = PSTR("FALHA - Sem Carga"); + break; + } + case PDU_FAILURE_AUX_DOWN: + { + ret_ptr = PSTR("FALHA - Auxiliar"); + break; + } + default: + { + break; + } + } + + break; + } + case PDU_STATE_NONE: + default: + { + /**/ + break; + } + } + + return ret_ptr; +} +/**********************************************************************************************************************/ +uint16_t BrbPDUBase_GetStateColor(BrbPDUBase *pdu_base) +{ + uint16_t color = ILI9341_BLUE; + + switch (pdu_base->state.code) + { + case PDU_STATE_RUNNING_POWER: + { + color = ILI9341_SEAGREEN; + break; + } + case PDU_STATE_RUNNING_AUX: + { + color = ILI9341_ORANGE; + break; + } + case PDU_STATE_TRANSF_P2A_DELAY: + case PDU_STATE_TRANSF_A2P_DELAY: + { + color = ILI9341_PURPLE; + break; + } + case PDU_STATE_FAILURE: + { + color = ILI9341_ORANGERED; + break; + } + case PDU_STATE_NONE: + { + color = ILI9341_DARKSEAGREEN; + break; + } + default: + { + /**/ + } + } + + return color; +} +/**********************************************************************************************************************/ +const char *BrbPDUBase_GetFailureText(BrbPDUBase *pdu_base) +{ + const char *ret_ptr = PSTR("- - - - -"); + + switch (pdu_base->state.fail) + { + case PDU_FAILURE_POWER_DOWN: + { + ret_ptr = PSTR("Verificar Carga"); + break; + } + case PDU_FAILURE_AUX_DOWN: + { + ret_ptr = PSTR("Verificar Auxiliar"); + break; + } + default: + { + break; + } + } + + return ret_ptr; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/src/ctl_rs485.cpp b/src/ctl_rs485.cpp index 313b99d..f743771 100644 --- a/src/ctl_rs485.cpp +++ b/src/ctl_rs485.cpp @@ -1,410 +1,410 @@ -/* - * ctl_rs485.cpp - * - * Created on: 2019-02-18 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "main.h" - -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionHandShakeCB; - -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionGetAnalogCB; -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetAnalogCB; -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetAnalogBMPCB; - -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionGetDigitalCB; -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetDigitalCB; -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetDigitalBMPCB; -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetScriptCB; -static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionDataCB; -/**********************************************************************************************************************/ -int BrbCtlRS485_Setup(BrbBase *brb_base) -{ - /* Clean up base */ - memset((BrbRS485Session *)&glob_rs485_sess, 0, sizeof(BrbRS485Session)); - BrbRS485Session *rs485_sess = (BrbRS485Session *)&glob_rs485_sess; - - rs485_sess->brb_base = brb_base; - rs485_sess->pinRO = RS485_RO_PIN; - rs485_sess->pinDI = RS485_DI_PIN; - rs485_sess->pinREDE = RS485_REDE_PIN; - rs485_sess->log_base = brb_base->log_base; - rs485_sess->serial = &Serial3; - rs485_sess->device_type = 0x11; - - /* Initialize SoftwareSerial to RS485 */ - // Serial3.begin(BRB_RS485_BAUDRATE); - // rs485_sess->serial->begin(BRB_RS485_BAUDRATE); - - // char buf[32]; - // sprintf(buf, "%p %p %p", &Serial1, brb_base, brb_base->log_base); - // Serial.println(buf); - - // LOG_DEBUG(brb_base->log_base, "SET - [%p]\r\n", rs485_sess); - - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_HANDSHAKE, BrbCtlRS485_SessionActionHandShakeCB, brb_base); - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_GET_A, BrbCtlRS485_SessionActionGetAnalogCB, brb_base); - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_A, BrbCtlRS485_SessionActionSetAnalogCB, brb_base); - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_A_BMP, BrbCtlRS485_SessionActionSetAnalogBMPCB, brb_base); - - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_GET_D, BrbCtlRS485_SessionActionGetDigitalCB, brb_base); - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_D, BrbCtlRS485_SessionActionSetDigitalCB, brb_base); - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_D_BMP, BrbCtlRS485_SessionActionSetDigitalBMPCB, brb_base); - - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_SCRIPT, BrbCtlRS485_SessionActionSetScriptCB, brb_base); - - BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_DATA, BrbCtlRS485_SessionActionDataCB, brb_base); - - /* Initialize session data */ - BrbRS485Session_Init(rs485_sess); - - return 0; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionHandShakeCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - // BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - // BrbRS485PacketHandShake *pkt_recv_hs = (BrbRS485PacketHandShake *)buffer_ptr; - - // LOG_INFO(rs485_sess->log_base, "GET HANDSHAKE [%02x][%02x][%02x][%02x]\n", - // pkt_recv_hs->uuid[0], pkt_recv_hs->uuid[1], pkt_recv_hs->uuid[2], pkt_recv_hs->uuid[3]); - - return RS485_PKT_RETURN_QUIET; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionGetAnalogCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketData *pkt_recv = (BrbRS485PacketData *)buffer_ptr; - BrbRS485PacketData *pkt_reply = (BrbRS485PacketData *)&rs485_sess->pkt.out.data; - BrbRS485PacketPinData *pin_data = (BrbRS485PacketPinData *)(pkt_reply + 1); - - int pin_code = pkt_recv->val.code; - int pin_begin; - int pin_max; - int op_status; - int i; - - /* Adjust pin query */ - if (pin_code < MIN_ANA_PIN || pin_code >= MAX_ANA_PIN) - { - pin_begin = MIN_ANA_PIN; - pin_max = MAX_ANA_PIN; - } - else - { - pin_begin = pin_code; - pin_max = pin_code + 1; - } - - // LOG_DEBUG(glob_log_base, "GET ANALOG - [%u] - [%d][%d]\n", pin_code, pin_begin, pin_max); - - /* Inverse the order two reply */ - pkt_reply->hdr.dst = pkt_recv->hdr.src; - pkt_reply->hdr.src = rs485_sess->data.address; - pkt_reply->hdr.id = pkt_recv->hdr.id; - pkt_reply->hdr.type = RS485_PKT_TYPE_CMD_GET_A; - pkt_reply->hdr.len = sizeof(BrbRS485PacketData) + (sizeof(BrbRS485PacketPinData) * (pin_max - pin_begin)); - - for (i = pin_begin; i < pin_max; i++) - { - pin_data->pin = i; - pin_data->type = 0; - pin_data->mode = BrbBase_PinGetMode(BrbBase_PinGetAnalogPin(i)); - pin_data->value = analogRead(i); - - // LOG_DEBUG(glob_log_base, "GET ANALOG [%u] - [%d]\n", i, pin_data->value); - - pin_data++; - } - - /* Send CRC */ - op_status = BrbRS485Session_SendPacket(rs485_sess, (byte *)pkt_reply, pkt_reply->hdr.len); - - if (op_status <= 0) - return RS485_PKT_RETURN_ACK_FAIL; - - return RS485_PKT_RETURN_QUIET; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionSetAnalogCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketSetPin *pkt_recv_set = (BrbRS485PacketSetPin *)buffer_ptr; - - LOG_INFO(rs485_sess->log_base, "SET ANALOG - [%u] [%u] [%u]\n", pkt_recv_set->pin, pkt_recv_set->mode, pkt_recv_set->value); - - /* Check pinCode we can set */ - if (pkt_recv_set->pin < MIN_ANA_PIN || pkt_recv_set->pin >= MAX_ANA_PIN) - return RS485_PKT_RETURN_ACK_FAIL; - - int analog_pin = BrbBase_PinGetAnalogPin(pkt_recv_set->pin); - - if (pkt_recv_set->mode == OUTPUT) - { - analogWrite(analog_pin, pkt_recv_set->value); - } - else if (pkt_recv_set->mode == INPUT) - pinMode(analog_pin, INPUT); - else if (pkt_recv_set->mode == INPUT_PULLUP) - pinMode(analog_pin, INPUT_PULLUP); - - glob_brb_base.pin_data[MAX_DIG_PIN + pkt_recv_set->pin].value = pkt_recv_set->value; - glob_brb_base.pin_data[MAX_DIG_PIN + pkt_recv_set->pin].mode = pkt_recv_set->mode; - glob_brb_base.pin_data[MAX_DIG_PIN + pkt_recv_set->pin].persist = pkt_recv_set->persist; - - // BrbBase_PinSave(rs485_sess->brb_base); - - return RS485_PKT_RETURN_ACK_SUCCESS; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionSetAnalogBMPCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485PacketSetPinBmpAna *pkt_recv_set = (BrbRS485PacketSetPinBmpAna *)buffer_ptr; - - int analog_pin; - int i; - - for (i = MIN_ANA_PIN; i < MAX_ANA_PIN && i < 32; i++) - { - if (pkt_recv_set->map[i].mode == 3) - continue; - - analog_pin = BrbBase_PinGetAnalogPin(i); - - LOG_INFO(rs485_sess->log_base, "SET ANALOG [%u]/[%u] - [%u] [%u]\n", - i, analog_pin, pkt_recv_set->map[i].mode, pkt_recv_set->map[i].value); - - if (pkt_recv_set->map[i].mode == OUTPUT) - { - analogWrite(analog_pin, pkt_recv_set->map[i].value); - } - else if (pkt_recv_set->map[i].mode == INPUT) - pinMode(analog_pin, INPUT); - else if (pkt_recv_set->map[i].mode == INPUT_PULLUP) - pinMode(analog_pin, INPUT_PULLUP); - - glob_brb_base.pin_data[MAX_DIG_PIN + i].value = pkt_recv_set->map[i].value; - glob_brb_base.pin_data[MAX_DIG_PIN + i].mode = pkt_recv_set->map[i].mode; - glob_brb_base.pin_data[MAX_DIG_PIN + i].persist = pkt_recv_set->map[i].persist; - } - - // BrbBase_PinSave(&glob_brb_base); - - return RS485_PKT_RETURN_ACK_SUCCESS; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionGetDigitalCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketData *pkt_recv = (BrbRS485PacketData *)buffer_ptr; - BrbRS485PacketData *pkt_reply = (BrbRS485PacketData *)&rs485_sess->pkt.out.data; - BrbRS485PacketPinData *pin_data = (BrbRS485PacketPinData *)(pkt_reply + 1); - - int pin_code = pkt_recv->val.code; - int pin_begin; - int pin_max; - int op_status; - int i; - - /* Adjust pin query */ - if (pin_code < 0 || pin_code >= MAX_DIG_PIN) - { - pin_begin = 0; - pin_max = MAX_DIG_PIN; - } - else - { - pin_begin = pin_code; - pin_max = pin_code + 1; - } - - LOG_INFO(rs485_sess->log_base, "GET DIGITAL - [%u] - [%d][%d]\n", pin_code, pin_begin, pin_max); - - /* Inverse the order two reply */ - pkt_reply->hdr.dst = pkt_recv->hdr.src; - pkt_reply->hdr.src = rs485_sess->data.address; - pkt_reply->hdr.id = pkt_recv->hdr.id; - pkt_reply->hdr.type = RS485_PKT_TYPE_CMD_GET_D; - pkt_reply->hdr.len = sizeof(BrbRS485PacketData) + (sizeof(BrbRS485PacketPinData) * (pin_max - pin_begin)); - - for (i = pin_begin; i < pin_max; i++) - { - pin_data->pin = i; - pin_data->type = 1; - pin_data->value = digitalRead(i); - pin_data->mode = BrbBase_PinGetMode(i); - // pin_data->value = 0; - // pin_data->mode = 0; - pin_data++; - } - - /* Send CRC */ - op_status = BrbRS485Session_SendPacket(rs485_sess, (byte *)pkt_reply, pkt_reply->hdr.len); - - if (op_status <= 0) - return RS485_PKT_RETURN_ACK_FAIL; - - return RS485_PKT_RETURN_QUIET; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionSetDigitalCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketSetPin *pkt_recv_set = (BrbRS485PacketSetPin *)buffer_ptr; - - LOG_WARN(rs485_sess->log_base, "SET DIGITAL - [%u] [%u] [%u]\n", pkt_recv_set->pin, pkt_recv_set->mode, pkt_recv_set->value); - - /* Check pinCode we can set */ - if (pkt_recv_set->pin < MIN_DIG_PIN || pkt_recv_set->pin >= MAX_DIG_PIN) - return RS485_PKT_RETURN_ACK_FAIL; - - /* Check output, set value */ - if (pkt_recv_set->mode == OUTPUT) - { - pinMode(pkt_recv_set->pin, OUTPUT); - - digitalWrite(pkt_recv_set->pin, (pkt_recv_set->value == HIGH) ? HIGH : LOW); - } - if (pkt_recv_set->mode == INPUT_PULLUP) - pinMode(pkt_recv_set->pin, INPUT_PULLUP); - else if (pkt_recv_set->mode == INPUT) - pinMode(pkt_recv_set->pin, INPUT); - - glob_brb_base.pin_data[pkt_recv_set->pin].value = (pkt_recv_set->value == HIGH) ? HIGH : LOW; - glob_brb_base.pin_data[pkt_recv_set->pin].mode = pkt_recv_set->mode; - glob_brb_base.pin_data[pkt_recv_set->pin].persist = pkt_recv_set->persist; - glob_brb_base.pin_data[pkt_recv_set->pin].persist = 0; - - // BrbBase_PinSave(&glob_brb_base); - - return RS485_PKT_RETURN_ACK_SUCCESS; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionSetDigitalBMPCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketSetPinBmpDig *pkt_recv_set = (BrbRS485PacketSetPinBmpDig *)buffer_ptr; - - int i; - for (i = MIN_DIG_PIN; i < MAX_DIG_PIN && i < 64; i++) - { - if (pkt_recv_set->map[i].mode == 3) - continue; - - LOG_DEBUG(rs485_sess->log_base, "SET DIGITAL [%u] - [%u] [%u]\n", i, pkt_recv_set->map[i].value, pkt_recv_set->map[i].mode); - - if (pkt_recv_set->map[i].mode == OUTPUT) - { - pinMode(i, OUTPUT); - - digitalWrite(i, (pkt_recv_set->map[i].value == HIGH) ? HIGH : LOW); - } - else if (pkt_recv_set->map[i].mode == INPUT) - pinMode(i, INPUT); - else if (pkt_recv_set->map[i].mode == INPUT_PULLUP) - pinMode(i, INPUT_PULLUP); - - glob_brb_base.pin_data[i].value = (pkt_recv_set->map[i].value == HIGH) ? HIGH : LOW; - glob_brb_base.pin_data[i].mode = pkt_recv_set->map[i].mode; - glob_brb_base.pin_data[i].persist = pkt_recv_set->map[i].persist; - glob_brb_base.pin_data[i].persist = 0; - } - - // BrbBase_PinSave(&glob_brb_base); - - return RS485_PKT_RETURN_ACK_SUCCESS; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionSetScriptCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketSetScript *pkt_recv_set = (BrbRS485PacketSetScript *)buffer_ptr; - BrbBase *brb_base = (BrbBase *)cb_data_ptr; - BrbMicroScript *script; - - LOG_WARN(rs485_sess->log_base, "SCRIPT SET [%p] [%p] [%d]\r\n", &glob_brb_base, brb_base, pkt_recv_set->script_id); - - script = BrbMicroScriptGrabFree(&brb_base->script_base); - - // LOG_WARN(rs485_sess->log_base, "SCRIPT SET [%p] [%p] [%o]\r\n", &glob_brb_base, brb_base, script); - - if (!script) - { - LOG_WARN(rs485_sess->log_base, "NO SCRIPT [%u]\r\n", pkt_recv_set->script_id); - - return RS485_PKT_RETURN_ACK_FAIL; - } - - memcpy(&script->code, &pkt_recv_set->code, sizeof(BrbMicroCode)); - - script->flags.persist = pkt_recv_set->persist; - script->flags.active = 1; - - return RS485_PKT_RETURN_ACK_SUCCESS; -} -/**********************************************************************************************************************/ -static int BrbCtlRS485_SessionActionDataCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) -{ - BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; - BrbRS485PacketData *pkt_data = (BrbRS485PacketData *)buffer_ptr; - BrbRS485PacketVal *pkt_val = (BrbRS485PacketVal *)&pkt_data->val; - BrbBase *brb_base = (BrbBase *)cb_data_ptr; - - LOG_WARN(rs485_sess->log_base, "ACTION DATA [%d] [%d] [%d]\r\n", pkt_data->hdr.id, pkt_val->type, pkt_val->code); - - switch (pkt_val->type) - { - case RS485_PKT_DATA_TYPE_ACTION: - { - BrbPDUBase_ActionCmd(&glob_pdu_base, pkt_val->code); - - break; - } - case RS485_PKT_DATA_TYPE_INFORM: - { - break; - } - case RS485_PKT_DATA_TYPE_NOTIFY: - { - break; - } - case RS485_PKT_DATA_TYPE_NONE: - case RS485_PKT_DATA_TYPE_LAST_ITEM: - default: - { - break; - } - - } - - return RS485_PKT_RETURN_ACK_SUCCESS; -} +/* + * ctl_rs485.cpp + * + * Created on: 2019-02-18 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "main.h" + +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionHandShakeCB; + +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionGetAnalogCB; +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetAnalogCB; +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetAnalogBMPCB; + +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionGetDigitalCB; +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetDigitalCB; +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetDigitalBMPCB; +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionSetScriptCB; +static BrbRS485SessionActionCBH BrbCtlRS485_SessionActionDataCB; +/**********************************************************************************************************************/ +int BrbCtlRS485_Setup(BrbBase *brb_base) +{ + /* Clean up base */ + memset((BrbRS485Session *)&glob_rs485_sess, 0, sizeof(BrbRS485Session)); + BrbRS485Session *rs485_sess = (BrbRS485Session *)&glob_rs485_sess; + + rs485_sess->brb_base = brb_base; + rs485_sess->pinRO = RS485_RO_PIN; + rs485_sess->pinDI = RS485_DI_PIN; + rs485_sess->pinREDE = RS485_REDE_PIN; + rs485_sess->log_base = brb_base->log_base; + rs485_sess->serial = &Serial3; + rs485_sess->device_type = 0x11; + + /* Initialize SoftwareSerial to RS485 */ + // Serial3.begin(BRB_RS485_BAUDRATE); + // rs485_sess->serial->begin(BRB_RS485_BAUDRATE); + + // char buf[32]; + // sprintf(buf, "%p %p %p", &Serial1, brb_base, brb_base->log_base); + // Serial.println(buf); + + // LOG_DEBUG(brb_base->log_base, "SET - [%p]\r\n", rs485_sess); + + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_HANDSHAKE, BrbCtlRS485_SessionActionHandShakeCB, brb_base); + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_GET_A, BrbCtlRS485_SessionActionGetAnalogCB, brb_base); + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_A, BrbCtlRS485_SessionActionSetAnalogCB, brb_base); + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_A_BMP, BrbCtlRS485_SessionActionSetAnalogBMPCB, brb_base); + + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_GET_D, BrbCtlRS485_SessionActionGetDigitalCB, brb_base); + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_D, BrbCtlRS485_SessionActionSetDigitalCB, brb_base); + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_D_BMP, BrbCtlRS485_SessionActionSetDigitalBMPCB, brb_base); + + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_CMD_SET_SCRIPT, BrbCtlRS485_SessionActionSetScriptCB, brb_base); + + BrbRS485Session_SetEventCB(rs485_sess, RS485_PKT_TYPE_DATA, BrbCtlRS485_SessionActionDataCB, brb_base); + + /* Initialize session data */ + BrbRS485Session_Init(rs485_sess); + + return 0; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionHandShakeCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + // BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + // BrbRS485PacketHandShake *pkt_recv_hs = (BrbRS485PacketHandShake *)buffer_ptr; + + // LOG_INFO(rs485_sess->log_base, "GET HANDSHAKE [%02x][%02x][%02x][%02x]\n", + // pkt_recv_hs->uuid[0], pkt_recv_hs->uuid[1], pkt_recv_hs->uuid[2], pkt_recv_hs->uuid[3]); + + return RS485_PKT_RETURN_QUIET; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionGetAnalogCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketData *pkt_recv = (BrbRS485PacketData *)buffer_ptr; + BrbRS485PacketData *pkt_reply = (BrbRS485PacketData *)&rs485_sess->pkt.out.data; + BrbRS485PacketPinData *pin_data = (BrbRS485PacketPinData *)(pkt_reply + 1); + + int pin_code = pkt_recv->val.code; + int pin_begin; + int pin_max; + int op_status; + int i; + + /* Adjust pin query */ + if (pin_code < MIN_ANA_PIN || pin_code >= MAX_ANA_PIN) + { + pin_begin = MIN_ANA_PIN; + pin_max = MAX_ANA_PIN; + } + else + { + pin_begin = pin_code; + pin_max = pin_code + 1; + } + + // LOG_DEBUG(glob_log_base, "GET ANALOG - [%u] - [%d][%d]\n", pin_code, pin_begin, pin_max); + + /* Inverse the order two reply */ + pkt_reply->hdr.dst = pkt_recv->hdr.src; + pkt_reply->hdr.src = rs485_sess->data.address; + pkt_reply->hdr.id = pkt_recv->hdr.id; + pkt_reply->hdr.type = RS485_PKT_TYPE_CMD_GET_A; + pkt_reply->hdr.len = sizeof(BrbRS485PacketData) + (sizeof(BrbRS485PacketPinData) * (pin_max - pin_begin)); + + for (i = pin_begin; i < pin_max; i++) + { + pin_data->pin = i; + pin_data->type = 0; + pin_data->mode = BrbBase_PinGetMode(BrbBase_PinGetAnalogPin(i)); + pin_data->value = analogRead(i); + + // LOG_DEBUG(glob_log_base, "GET ANALOG [%u] - [%d]\n", i, pin_data->value); + + pin_data++; + } + + /* Send CRC */ + op_status = BrbRS485Session_SendPacket(rs485_sess, (byte *)pkt_reply, pkt_reply->hdr.len); + + if (op_status <= 0) + return RS485_PKT_RETURN_ACK_FAIL; + + return RS485_PKT_RETURN_QUIET; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionSetAnalogCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketSetPin *pkt_recv_set = (BrbRS485PacketSetPin *)buffer_ptr; + + LOG_INFO(rs485_sess->log_base, "SET ANALOG - [%u] [%u] [%u]\n", pkt_recv_set->pin, pkt_recv_set->mode, pkt_recv_set->value); + + /* Check pinCode we can set */ + if (pkt_recv_set->pin < MIN_ANA_PIN || pkt_recv_set->pin >= MAX_ANA_PIN) + return RS485_PKT_RETURN_ACK_FAIL; + + int analog_pin = BrbBase_PinGetAnalogPin(pkt_recv_set->pin); + + if (pkt_recv_set->mode == OUTPUT) + { + analogWrite(analog_pin, pkt_recv_set->value); + } + else if (pkt_recv_set->mode == INPUT) + pinMode(analog_pin, INPUT); + else if (pkt_recv_set->mode == INPUT_PULLUP) + pinMode(analog_pin, INPUT_PULLUP); + + glob_brb_base.pin_data[MAX_DIG_PIN + pkt_recv_set->pin].value = pkt_recv_set->value; + glob_brb_base.pin_data[MAX_DIG_PIN + pkt_recv_set->pin].mode = pkt_recv_set->mode; + glob_brb_base.pin_data[MAX_DIG_PIN + pkt_recv_set->pin].persist = pkt_recv_set->persist; + + // BrbBase_PinSave(rs485_sess->brb_base); + + return RS485_PKT_RETURN_ACK_SUCCESS; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionSetAnalogBMPCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485PacketSetPinBmpAna *pkt_recv_set = (BrbRS485PacketSetPinBmpAna *)buffer_ptr; + + int analog_pin; + int i; + + for (i = MIN_ANA_PIN; i < MAX_ANA_PIN && i < 32; i++) + { + if (pkt_recv_set->map[i].mode == 3) + continue; + + analog_pin = BrbBase_PinGetAnalogPin(i); + + LOG_INFO(rs485_sess->log_base, "SET ANALOG [%u]/[%u] - [%u] [%u]\n", + i, analog_pin, pkt_recv_set->map[i].mode, pkt_recv_set->map[i].value); + + if (pkt_recv_set->map[i].mode == OUTPUT) + { + analogWrite(analog_pin, pkt_recv_set->map[i].value); + } + else if (pkt_recv_set->map[i].mode == INPUT) + pinMode(analog_pin, INPUT); + else if (pkt_recv_set->map[i].mode == INPUT_PULLUP) + pinMode(analog_pin, INPUT_PULLUP); + + glob_brb_base.pin_data[MAX_DIG_PIN + i].value = pkt_recv_set->map[i].value; + glob_brb_base.pin_data[MAX_DIG_PIN + i].mode = pkt_recv_set->map[i].mode; + glob_brb_base.pin_data[MAX_DIG_PIN + i].persist = pkt_recv_set->map[i].persist; + } + + // BrbBase_PinSave(&glob_brb_base); + + return RS485_PKT_RETURN_ACK_SUCCESS; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionGetDigitalCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketData *pkt_recv = (BrbRS485PacketData *)buffer_ptr; + BrbRS485PacketData *pkt_reply = (BrbRS485PacketData *)&rs485_sess->pkt.out.data; + BrbRS485PacketPinData *pin_data = (BrbRS485PacketPinData *)(pkt_reply + 1); + + int pin_code = pkt_recv->val.code; + int pin_begin; + int pin_max; + int op_status; + int i; + + /* Adjust pin query */ + if (pin_code < 0 || pin_code >= MAX_DIG_PIN) + { + pin_begin = 0; + pin_max = MAX_DIG_PIN; + } + else + { + pin_begin = pin_code; + pin_max = pin_code + 1; + } + + LOG_INFO(rs485_sess->log_base, "GET DIGITAL - [%u] - [%d][%d]\n", pin_code, pin_begin, pin_max); + + /* Inverse the order two reply */ + pkt_reply->hdr.dst = pkt_recv->hdr.src; + pkt_reply->hdr.src = rs485_sess->data.address; + pkt_reply->hdr.id = pkt_recv->hdr.id; + pkt_reply->hdr.type = RS485_PKT_TYPE_CMD_GET_D; + pkt_reply->hdr.len = sizeof(BrbRS485PacketData) + (sizeof(BrbRS485PacketPinData) * (pin_max - pin_begin)); + + for (i = pin_begin; i < pin_max; i++) + { + pin_data->pin = i; + pin_data->type = 1; + pin_data->value = digitalRead(i); + pin_data->mode = BrbBase_PinGetMode(i); + // pin_data->value = 0; + // pin_data->mode = 0; + pin_data++; + } + + /* Send CRC */ + op_status = BrbRS485Session_SendPacket(rs485_sess, (byte *)pkt_reply, pkt_reply->hdr.len); + + if (op_status <= 0) + return RS485_PKT_RETURN_ACK_FAIL; + + return RS485_PKT_RETURN_QUIET; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionSetDigitalCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketSetPin *pkt_recv_set = (BrbRS485PacketSetPin *)buffer_ptr; + + LOG_WARN(rs485_sess->log_base, "SET DIGITAL - [%u] [%u] [%u]\n", pkt_recv_set->pin, pkt_recv_set->mode, pkt_recv_set->value); + + /* Check pinCode we can set */ + if (pkt_recv_set->pin < MIN_DIG_PIN || pkt_recv_set->pin >= MAX_DIG_PIN) + return RS485_PKT_RETURN_ACK_FAIL; + + /* Check output, set value */ + if (pkt_recv_set->mode == OUTPUT) + { + pinMode(pkt_recv_set->pin, OUTPUT); + + digitalWrite(pkt_recv_set->pin, (pkt_recv_set->value == HIGH) ? HIGH : LOW); + } + if (pkt_recv_set->mode == INPUT_PULLUP) + pinMode(pkt_recv_set->pin, INPUT_PULLUP); + else if (pkt_recv_set->mode == INPUT) + pinMode(pkt_recv_set->pin, INPUT); + + glob_brb_base.pin_data[pkt_recv_set->pin].value = (pkt_recv_set->value == HIGH) ? HIGH : LOW; + glob_brb_base.pin_data[pkt_recv_set->pin].mode = pkt_recv_set->mode; + glob_brb_base.pin_data[pkt_recv_set->pin].persist = pkt_recv_set->persist; + glob_brb_base.pin_data[pkt_recv_set->pin].persist = 0; + + // BrbBase_PinSave(&glob_brb_base); + + return RS485_PKT_RETURN_ACK_SUCCESS; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionSetDigitalBMPCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketSetPinBmpDig *pkt_recv_set = (BrbRS485PacketSetPinBmpDig *)buffer_ptr; + + int i; + for (i = MIN_DIG_PIN; i < MAX_DIG_PIN && i < 64; i++) + { + if (pkt_recv_set->map[i].mode == 3) + continue; + + LOG_DEBUG(rs485_sess->log_base, "SET DIGITAL [%u] - [%u] [%u]\n", i, pkt_recv_set->map[i].value, pkt_recv_set->map[i].mode); + + if (pkt_recv_set->map[i].mode == OUTPUT) + { + pinMode(i, OUTPUT); + + digitalWrite(i, (pkt_recv_set->map[i].value == HIGH) ? HIGH : LOW); + } + else if (pkt_recv_set->map[i].mode == INPUT) + pinMode(i, INPUT); + else if (pkt_recv_set->map[i].mode == INPUT_PULLUP) + pinMode(i, INPUT_PULLUP); + + glob_brb_base.pin_data[i].value = (pkt_recv_set->map[i].value == HIGH) ? HIGH : LOW; + glob_brb_base.pin_data[i].mode = pkt_recv_set->map[i].mode; + glob_brb_base.pin_data[i].persist = pkt_recv_set->map[i].persist; + glob_brb_base.pin_data[i].persist = 0; + } + + // BrbBase_PinSave(&glob_brb_base); + + return RS485_PKT_RETURN_ACK_SUCCESS; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionSetScriptCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketSetScript *pkt_recv_set = (BrbRS485PacketSetScript *)buffer_ptr; + BrbBase *brb_base = (BrbBase *)cb_data_ptr; + BrbMicroScript *script; + + LOG_WARN(rs485_sess->log_base, "SCRIPT SET [%p] [%p] [%d]\r\n", &glob_brb_base, brb_base, pkt_recv_set->script_id); + + script = BrbMicroScriptGrabFree(&brb_base->script_base); + + // LOG_WARN(rs485_sess->log_base, "SCRIPT SET [%p] [%p] [%o]\r\n", &glob_brb_base, brb_base, script); + + if (!script) + { + LOG_WARN(rs485_sess->log_base, "NO SCRIPT [%u]\r\n", pkt_recv_set->script_id); + + return RS485_PKT_RETURN_ACK_FAIL; + } + + memcpy(&script->code, &pkt_recv_set->code, sizeof(BrbMicroCode)); + + script->flags.persist = pkt_recv_set->persist; + script->flags.active = 1; + + return RS485_PKT_RETURN_ACK_SUCCESS; +} +/**********************************************************************************************************************/ +static int BrbCtlRS485_SessionActionDataCB(void *base_ptr, int action_code, const void *buffer_ptr, unsigned int buffer_sz, void *cb_data_ptr) +{ + BrbRS485Session *rs485_sess = (BrbRS485Session *)base_ptr; + BrbRS485PacketData *pkt_data = (BrbRS485PacketData *)buffer_ptr; + BrbRS485PacketVal *pkt_val = (BrbRS485PacketVal *)&pkt_data->val; + BrbBase *brb_base = (BrbBase *)cb_data_ptr; + + LOG_WARN(rs485_sess->log_base, "ACTION DATA [%d] [%d] [%d]\r\n", pkt_data->hdr.id, pkt_val->type, pkt_val->code); + + switch (pkt_val->type) + { + case RS485_PKT_DATA_TYPE_ACTION: + { + BrbPDUBase_ActionCmd(&glob_pdu_base, pkt_val->code); + + break; + } + case RS485_PKT_DATA_TYPE_INFORM: + { + break; + } + case RS485_PKT_DATA_TYPE_NOTIFY: + { + break; + } + case RS485_PKT_DATA_TYPE_NONE: + case RS485_PKT_DATA_TYPE_LAST_ITEM: + default: + { + break; + } + + } + + return RS485_PKT_RETURN_ACK_SUCCESS; +} /**********************************************************************************************************************/ \ No newline at end of file diff --git a/src/main.h b/src/main.h index b3708a0..4a45a91 100644 --- a/src/main.h +++ b/src/main.h @@ -1,331 +1,331 @@ -/* - * main.h - * - * Created on: 2018-02-01 - * Author: Luiz Fernando Souza Softov - * Author: Guilherme Amorim de Oliveira Alves - * - * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) - * Todos os direitos reservados. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef MAIN_H_ -#define MAIN_H_ -/**********************************************************************************************************************/ -/* Import needed libraries */ -#include "Arduino.h" -#include "BrbBase.h" - -#include "BrbBtnBase.h" -#include "BrbToneBase.h" -#include "BrbMCUServoBase.h" - -#include - -#include - -#include - -#define DHT_DEBUG 1 -#include "Adafruit_Sensor.h" -#include "DHT.h" -/**********************************************************************************************************************/ -/* DEFINES */ -/**********************************************************/ -// #define RESERVED 0 /* RX0 */ -// #define RESERVED 1 /* TX0 */ -#define PDU_ZEROCROSS_POWER_PIN 2 /* INT4 - PWM */ -#define PDU_ZEROCROSS_AUX_PIN 3 /* INT5 - PWM */ -// #define RESERVED 4 /* PWM */ -// #define RESERVED 5 /* PWM */ -// #define RESERVED 6 /* PWM */ -#define BUZZER_PIN 7 /* PWM */ -#define DHT_SENSOR_PIN 8 /* PWM */ -#define DHT_SENSOR_TYPE DHT11 -// #define RESERVED 9 /* PWM */ -// #define RESERVED 10 /* PCINT 4 */ -// #define RESERVED 11 /* PCINT 5 */ -// #define RESERVED 12 /* PCINT 6 */ -// #define RESERVED 13 /* PCINT 7 */ -#define RS485_DI_PIN 14 /* PCINT10 - TX3 */ -#define RS485_RO_PIN 15 /* PCINT9 - RX3 */ -// #define RESERVED 16 /* TX2 */ -// #define RESERVED 17 /* RX2 */ -// #define RESERVED 18 /* INT3 - TX1 */ -// #define RESERVED 19 /* INT2 - RX1 */ -// #define RESERVED 20 /* INT0 - SCL */ -// #define RESERVED 21 /* INT1 - SDA */ -#define RS485_REDE_PIN 22 /* TOGGLE PIN (RE + DE) */ -// #define RESERVED 23 /* */ -// #define RESERVED 24 /* */ -// #define RESERVED 25 /* */ -#define BTN_PIN_SELECT 26 /* */ -#define BTN_PIN_NEXT 27 /* */ -#define BTN_PIN_PREV 28 /* */ -// #define RESERVED 29 /* */ -// #define RESERVED 30 /* */ -// #define RESERVED 31 /* */ -// #define RESERVED 32 /* */ -// #define RESERVED 33 /* */ -// #define RESERVED 34 /* */ -// #define RESERVED 35 /* */ -// #define RESERVED 36 /* */ -// #define RESERVED 37 /* */ -// #define RESERVED 38 /* */ -// #define RESERVED 39 /* */ -// #define RESERVED 40 /* */ -// #define RESERVED 41 /* */ -// #define RESERVED 42 -// #define RESERVED 43 /* */ -// #define RESERVED 44 /* */ -// #define RESERVED 45 /* PWM */ -#define TFT_LED 46 /* PWM */ -#define TFT_CS 47 /* */ -#define TFT_DC 48 /* */ -#define TFT_RST 49 /* */ -#define TFT_MISO 50 /* PCINT3 - MISO */ -#define TFT_MOSI 51 /* PCINT2 - MOSI */ -#define TFT_CLK 52 /* PCINT1 - SCK */ -// #define RESERVED 53 /* PCINT0 - SS */ - -#define SENSOR_DC_SUPPLY_01_IN_PIN A0 -#define SENSOR_DC_SUPPLY_01_OUT_PIN A1 -#define SENSOR_DC_SUPPLY_02_IN_PIN A2 -#define SENSOR_DC_SUPPLY_02_OUT_PIN A3 - -#define SENSOR_AC_POWER_PIN A5 -#define SENSOR_AC_AUX_PIN A6 -// #define SENSOR_AC_BAT_PIN A7 -/**********************************************************/ -#define PDU_EEPROM_OFFSET (BRB_RS485_EEPROM_OFFSET + 64) - -// #define PDU_POWER_REVERSE 1 - -#ifdef PDU_POWER_REVERSE -#define PDU_POWER_ON LOW -#define PDU_POWER_OFF HIGH -#else -#define PDU_POWER_ON HIGH -#define PDU_POWER_OFF LOW -#endif - -#define PDU_POWER_MIN_VALUE 5 -#define PDU_POWER_MIN_HZ 10 - -#define PDU_AUX_MIN_VALUE 5 -#define PDU_AUX_MIN_HZ 10 -/**********************************************************/ -#define PDU_TIMER_FAIL_WAIT_MS 10000 - -#define PDU_TIMER_POWER_MIN_MS 15000 - -#define PDU_TIMER_AUX_MIN_MS 15000 -// #define PDU_TIMER_AUX_WAIT_MS 5000 - -#define PDU_TIMER_TRANSF_P2A_WAIT_MS 15000 -#define PDU_TIMER_TRANSF_A2P_WAIT_MS 15000 - -#define PDU_TIMER_ZERO_WAIT_MS 2000 - -#define PDU_TIMER_SENSOR_WAIT_MS 2000 -#define PDU_TIMER_SENSOR_SAMPLES 5 - -#define PDU_TIMER_DHT_MS 1000 -/**********************************************************************************************************************/ -/* ENUMS */ -/**********************************************************/ -typedef enum -{ - PDU_ACTION_NONE, - PDU_ACTION_TRANSFER_ENABLE, - PDU_ACTION_TRANSFER_DISABLE, - PDU_ACTION_TRANSFER_FORCE, - - PDU_ACTION_LAST_ITEM - -} BrbPDUActionCode; - -typedef enum -{ - PDU_FAILURE_NONE, - PDU_FAILURE_POWER_DOWN, - PDU_FAILURE_AUX_DOWN, - - PDU_FAILURE_CANT_P2A, - PDU_FAILURE_CANT_A2P, - -} BrbPDUFailureCode; - -typedef enum -{ - PDU_STATE_NONE, - PDU_STATE_FAILURE, - - PDU_STATE_RUNNING_POWER, - PDU_STATE_RUNNING_AUX, - - PDU_STATE_TRANSF_P2A_DELAY, - PDU_STATE_TRANSF_A2P_DELAY - -} BrbPDUStateCode; -/**********************************************************************************************************************/ -/* STRUCTS */ -/**********************************************************/ -typedef struct _BrbPDUBase -{ - BrbBase *brb_base; - BrbToneBase *tone_base; - DHT *dht_sensor; - - BrbZeroCross zero_power; - BrbZeroCross zero_aux; - - BrbSensorVoltage sensor_power; - BrbSensorVoltage sensor_aux; - - BrbSensorVoltage sensor_sp01_in; - BrbSensorVoltage sensor_sp01_out; - - BrbSensorVoltage sensor_sp02_in; - BrbSensorVoltage sensor_sp02_out; - - int pin_transfer; - - struct - { - long cur; - long last; - long delay; - - long power_time; - long power_delay; - - long aux_time; - long aux_delay; - - } ms; - - struct - { - long ms_delta; - long ms_last; - - } zerocross; - - struct - { - long ms_delta; - long ms_last; - - } sensor; - - struct - { - float dht_temp; - float dht_humi; - float dht_hidx; - int ms_delta; - int ms_last; - - uint8_t pin; - uint8_t type; - } dht_data; - - struct - { - BrbPDUStateCode code; - BrbPDUFailureCode fail; - - long time; - long delta; - - int retry; - - } state; - - struct - { - long hourmeter_ms; - long hourmeter_sec; - - } info; - - /* data is persistent */ - struct - { - long hourmeter_total; - long hourmeter_time; - long hourmeter_reset; - - long reserved1; - long reserved2; - long reserved3; - - } data; - - struct - { - unsigned int transfer_enabled : 1; - unsigned int transfer_force : 1; - } flags; - -} BrbPDUBase; -/**********************************************************************************************************************/ -int BrbPDUBase_Init(BrbPDUBase *pdu_base); -int BrbPDUBase_Loop(BrbPDUBase *pdu_base); -int BrbPDUBase_Save(BrbPDUBase *pdu_base); - -// int BrbPDUBase_HourmeterReset(BrbPDUBase *pdu_base); -int BrbPDUBase_ActionCmd(BrbPDUBase *pdu_base, int cmd_code); - -// int BrbPDUBase_Start(BrbPDUBase *pdu_base); -// int BrbPDUBase_Stop(BrbPDUBase *pdu_base); -// int BrbPDUBase_FailureConfirm(BrbPDUBase *pdu_base); - -const char *BrbPDUBase_GetStateText(BrbPDUBase *pdu_base); -uint16_t BrbPDUBase_GetStateColor(BrbPDUBase *pdu_base); -const char *BrbPDUBase_GetFailureText(BrbPDUBase *pdu_base); -/**********************************************************************************************************************/ -/* Display */ -/**********************************************************/ -int BrbCtlDisplay_Setup(BrbBase *brb_base); -/**********************************************************************************************************************/ -/* RS485 */ -/**********************************************************/ -int BrbCtlRS485_Setup(BrbBase *brb_base); -/**********************************************************************************************************************/ -/* Global control structures */ -extern BrbLogBase *glob_log_base; -extern BrbBase glob_brb_base; -extern BrbRS485Session glob_rs485_sess; - -extern BrbBtnBase glob_btn_base; -extern BrbDisplayBase glob_display_base; -extern BrbToneBase glob_tone_base; -extern BrbMCUServoBase glob_servo_base; - -extern BrbPDUBase glob_pdu_base; -/**********************************************************************************************************************/ -#endif /* MAIN_H_ */ +/* + * main.h + * + * Created on: 2018-02-01 + * Author: Luiz Fernando Souza Softov + * Author: Guilherme Amorim de Oliveira Alves + * + * Copyright (c) 2018 BrByte Software (Oliveira Alves & Amorim LTDA) + * Todos os direitos reservados. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MAIN_H_ +#define MAIN_H_ +/**********************************************************************************************************************/ +/* Import needed libraries */ +#include "Arduino.h" +#include "BrbBase.h" + +#include "BrbBtnBase.h" +#include "BrbToneBase.h" +#include "BrbMCUServoBase.h" + +#include + +#include + +#include + +#define DHT_DEBUG 1 +#include "Adafruit_Sensor.h" +#include "DHT.h" +/**********************************************************************************************************************/ +/* DEFINES */ +/**********************************************************/ +// #define RESERVED 0 /* RX0 */ +// #define RESERVED 1 /* TX0 */ +#define PDU_ZEROCROSS_POWER_PIN 2 /* INT4 - PWM */ +#define PDU_ZEROCROSS_AUX_PIN 3 /* INT5 - PWM */ +// #define RESERVED 4 /* PWM */ +// #define RESERVED 5 /* PWM */ +// #define RESERVED 6 /* PWM */ +#define BUZZER_PIN 7 /* PWM */ +#define DHT_SENSOR_PIN 8 /* PWM */ +#define DHT_SENSOR_TYPE DHT11 +// #define RESERVED 9 /* PWM */ +// #define RESERVED 10 /* PCINT 4 */ +// #define RESERVED 11 /* PCINT 5 */ +// #define RESERVED 12 /* PCINT 6 */ +// #define RESERVED 13 /* PCINT 7 */ +#define RS485_DI_PIN 14 /* PCINT10 - TX3 */ +#define RS485_RO_PIN 15 /* PCINT9 - RX3 */ +// #define RESERVED 16 /* TX2 */ +// #define RESERVED 17 /* RX2 */ +// #define RESERVED 18 /* INT3 - TX1 */ +// #define RESERVED 19 /* INT2 - RX1 */ +// #define RESERVED 20 /* INT0 - SCL */ +// #define RESERVED 21 /* INT1 - SDA */ +#define RS485_REDE_PIN 22 /* TOGGLE PIN (RE + DE) */ +// #define RESERVED 23 /* */ +// #define RESERVED 24 /* */ +// #define RESERVED 25 /* */ +#define BTN_PIN_SELECT 26 /* */ +#define BTN_PIN_NEXT 27 /* */ +#define BTN_PIN_PREV 28 /* */ +// #define RESERVED 29 /* */ +// #define RESERVED 30 /* */ +// #define RESERVED 31 /* */ +// #define RESERVED 32 /* */ +// #define RESERVED 33 /* */ +// #define RESERVED 34 /* */ +// #define RESERVED 35 /* */ +// #define RESERVED 36 /* */ +// #define RESERVED 37 /* */ +// #define RESERVED 38 /* */ +// #define RESERVED 39 /* */ +// #define RESERVED 40 /* */ +// #define RESERVED 41 /* */ +// #define RESERVED 42 +// #define RESERVED 43 /* */ +// #define RESERVED 44 /* */ +// #define RESERVED 45 /* PWM */ +#define TFT_LED 46 /* PWM */ +#define TFT_CS 47 /* */ +#define TFT_DC 48 /* */ +#define TFT_RST 49 /* */ +#define TFT_MISO 50 /* PCINT3 - MISO */ +#define TFT_MOSI 51 /* PCINT2 - MOSI */ +#define TFT_CLK 52 /* PCINT1 - SCK */ +// #define RESERVED 53 /* PCINT0 - SS */ + +#define SENSOR_DC_SUPPLY_01_IN_PIN A0 +#define SENSOR_DC_SUPPLY_01_OUT_PIN A1 +#define SENSOR_DC_SUPPLY_02_IN_PIN A2 +#define SENSOR_DC_SUPPLY_02_OUT_PIN A3 + +#define SENSOR_AC_POWER_PIN A5 +#define SENSOR_AC_AUX_PIN A6 +// #define SENSOR_AC_BAT_PIN A7 +/**********************************************************/ +#define PDU_EEPROM_OFFSET (BRB_RS485_EEPROM_OFFSET + 64) + +// #define PDU_POWER_REVERSE 1 + +#ifdef PDU_POWER_REVERSE +#define PDU_POWER_ON LOW +#define PDU_POWER_OFF HIGH +#else +#define PDU_POWER_ON HIGH +#define PDU_POWER_OFF LOW +#endif + +#define PDU_POWER_MIN_VALUE 5 +#define PDU_POWER_MIN_HZ 10 + +#define PDU_AUX_MIN_VALUE 5 +#define PDU_AUX_MIN_HZ 10 +/**********************************************************/ +#define PDU_TIMER_FAIL_WAIT_MS 10000 + +#define PDU_TIMER_POWER_MIN_MS 15000 + +#define PDU_TIMER_AUX_MIN_MS 15000 +// #define PDU_TIMER_AUX_WAIT_MS 5000 + +#define PDU_TIMER_TRANSF_P2A_WAIT_MS 15000 +#define PDU_TIMER_TRANSF_A2P_WAIT_MS 15000 + +#define PDU_TIMER_ZERO_WAIT_MS 2000 + +#define PDU_TIMER_SENSOR_WAIT_MS 2000 +#define PDU_TIMER_SENSOR_SAMPLES 5 + +#define PDU_TIMER_DHT_MS 1000 +/**********************************************************************************************************************/ +/* ENUMS */ +/**********************************************************/ +typedef enum +{ + PDU_ACTION_NONE, + PDU_ACTION_TRANSFER_ENABLE, + PDU_ACTION_TRANSFER_DISABLE, + PDU_ACTION_TRANSFER_FORCE, + + PDU_ACTION_LAST_ITEM + +} BrbPDUActionCode; + +typedef enum +{ + PDU_FAILURE_NONE, + PDU_FAILURE_POWER_DOWN, + PDU_FAILURE_AUX_DOWN, + + PDU_FAILURE_CANT_P2A, + PDU_FAILURE_CANT_A2P, + +} BrbPDUFailureCode; + +typedef enum +{ + PDU_STATE_NONE, + PDU_STATE_FAILURE, + + PDU_STATE_RUNNING_POWER, + PDU_STATE_RUNNING_AUX, + + PDU_STATE_TRANSF_P2A_DELAY, + PDU_STATE_TRANSF_A2P_DELAY + +} BrbPDUStateCode; +/**********************************************************************************************************************/ +/* STRUCTS */ +/**********************************************************/ +typedef struct _BrbPDUBase +{ + BrbBase *brb_base; + BrbToneBase *tone_base; + DHT *dht_sensor; + + BrbZeroCross zero_power; + BrbZeroCross zero_aux; + + BrbSensorVoltage sensor_power; + BrbSensorVoltage sensor_aux; + + BrbSensorVoltage sensor_sp01_in; + BrbSensorVoltage sensor_sp01_out; + + BrbSensorVoltage sensor_sp02_in; + BrbSensorVoltage sensor_sp02_out; + + int pin_transfer; + + struct + { + long cur; + long last; + long delay; + + long power_time; + long power_delay; + + long aux_time; + long aux_delay; + + } ms; + + struct + { + long ms_delta; + long ms_last; + + } zerocross; + + struct + { + long ms_delta; + long ms_last; + + } sensor; + + struct + { + float dht_temp; + float dht_humi; + float dht_hidx; + int ms_delta; + int ms_last; + + uint8_t pin; + uint8_t type; + } dht_data; + + struct + { + BrbPDUStateCode code; + BrbPDUFailureCode fail; + + long time; + long delta; + + int retry; + + } state; + + struct + { + long hourmeter_ms; + long hourmeter_sec; + + } info; + + /* data is persistent */ + struct + { + long hourmeter_total; + long hourmeter_time; + long hourmeter_reset; + + long reserved1; + long reserved2; + long reserved3; + + } data; + + struct + { + unsigned int transfer_enabled : 1; + unsigned int transfer_force : 1; + } flags; + +} BrbPDUBase; +/**********************************************************************************************************************/ +int BrbPDUBase_Init(BrbPDUBase *pdu_base); +int BrbPDUBase_Loop(BrbPDUBase *pdu_base); +int BrbPDUBase_Save(BrbPDUBase *pdu_base); + +// int BrbPDUBase_HourmeterReset(BrbPDUBase *pdu_base); +int BrbPDUBase_ActionCmd(BrbPDUBase *pdu_base, int cmd_code); + +// int BrbPDUBase_Start(BrbPDUBase *pdu_base); +// int BrbPDUBase_Stop(BrbPDUBase *pdu_base); +// int BrbPDUBase_FailureConfirm(BrbPDUBase *pdu_base); + +const char *BrbPDUBase_GetStateText(BrbPDUBase *pdu_base); +uint16_t BrbPDUBase_GetStateColor(BrbPDUBase *pdu_base); +const char *BrbPDUBase_GetFailureText(BrbPDUBase *pdu_base); +/**********************************************************************************************************************/ +/* Display */ +/**********************************************************/ +int BrbCtlDisplay_Setup(BrbBase *brb_base); +/**********************************************************************************************************************/ +/* RS485 */ +/**********************************************************/ +int BrbCtlRS485_Setup(BrbBase *brb_base); +/**********************************************************************************************************************/ +/* Global control structures */ +extern BrbLogBase *glob_log_base; +extern BrbBase glob_brb_base; +extern BrbRS485Session glob_rs485_sess; + +extern BrbBtnBase glob_btn_base; +extern BrbDisplayBase glob_display_base; +extern BrbToneBase glob_tone_base; +extern BrbMCUServoBase glob_servo_base; + +extern BrbPDUBase glob_pdu_base; +/**********************************************************************************************************************/ +#endif /* MAIN_H_ */